这个问题已经在这里有了答案:




已关闭8年。






为什么下面的代码编译没有问题,但是当我切换行时

MCl<char, a> tryout;


MCl<char, a> tryout();

我收到“错误C2228:'。ea'的左边必须有class/struct/union”? tryout()不是对默认构造函数的调用吗?

这是完整的代码
template <class T, T myval> class MCl
{
public:
    T ea;
    MCl() : ea(myval)
    {
    }
};

int main()
{


    const char a = 'e';
    MCl<char, a> tryout;
    // MCl<char, a> tryout();

    cout << tryout.ea;

    return 0;
}

最佳答案

MCl<char, a> tryout();

声明函数tryout,该函数什么也不接收,并返回MCl<char, a>

n3337 8.2/1

08-26 19:49