我有在VS-2010中编译的代码,没有警告:
class MyClass {
public:
class InternalClass;
};
class MyClass::InternalClass {
};
template<class QWERTY>
void Func( QWERTY& arg )
{
typename QWERTY::InternalClass;
}
int main()
{
MyClass var;
Func( var );
return 0;
}
现在我在VS-2017中编译此代码并得到警告4091:
warning C4091: '': ignored on left of 'MyClass::InternalClass' when no variable is declared
如果我想继续进行类型检查(而不想要警告:),该怎么办?
最佳答案
警告是抱怨这条线
typename QWERTY::InternalClass;
没有做任何事情,因为您没有声明变量或对其没有任何意义。它基本上与一行
int;
为了摆脱警告,一个简单的解决方法是实际使用它。例如
using MyType = typename QWERTY::InternalClass;
//or
typename QWERTY::InternalClass myObj;
//myObj....
这样做还将保留类型检查。