这个问题已经在这里有了答案:
已关闭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