0尊敬的 StackExchange 社区,
我花了两个小时试图找到问题的根源,但完全失败了。Research=google 搜索也没有提供任何可行的解决方案。至少我能够发现,在 VS 6.0 下,不能在 header 和 .cpp 文件之间拆分模板函数的声明和实现。
也许我的方法本身就有缺陷,或者这次是 VS 6.0 特别令人讨厌。
这是我写的测试代码。
#include "stdafx.h"
#include <string>
#include <iostream>
class TestClass{
public:
template<class T> inline bool isNull(T& inObject){
return 0; // edited because of the answer by Joachim Pileborg :)
// initial code was: return (inObject != NULL) ? 0:1;
}
};
using namespace std;
int main(int argc, char* argv[])
{
cout<<TestClass::isNull<string>("test");
return 0;
}
运行此代码会导致以下错误:
致命错误 C1001:INTERNER COMPILER-FEHLER(编译器文件“msc1.cpp”,第 1794 行)
有人知道我在这里做错了什么吗?
PS:这次我真的很努力地尽可能准确地提出这个问题,并提供了一个具体的例子。请让我知道是否还有其他我应该添加的内容。
P.SS:我知道 Visual Studio 6.0 已经很老了,但我不得不在工作中使用它。使用新的编译器(在家)运行相同的代码不会导致任何错误。这就是为什么我认为问题主要是由 VS 6.0 的突发奇想引起的。
提前感谢您的帮助!京东