我得到了一个编译器警告,我在这种情况下不理解.当我从以下代码编译"Child.cpp"时.(不要错过:我将我的课堂声明剥离到最低限度,所以内容没有多大意义,但你会更快地看到问题).我在最高警告级别上使用Visual Studio 2003和Visual Studio 2008收到警告.
AbstractClass.h:
#include <iostream>
template<typename T>
class AbstractClass
{
public:
virtual void Cancel(); // { std::cout << "Abstract Cancel" << std::endl; };
virtual void Process() = 0;
};
// Outside definition. If I comment out this and take the inline
// definition like above (currently commented out), I don't get
// a compiler warning.
template<typename T>
void AbstractClass<T>::Cancel()
{
std::cout << "Abstract Cancel" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
Child.h:
#include "AbstractClass.h"
class Child …Run Code Online (Sandbox Code Playgroud)