0StackExchange コミュニティの皆様
問題の原因を突き止めようと 2 時間試みましたが、完全に失敗しました。Research=google 検索も実行可能な解決策を提供しませんでした。少なくとも、VS 6.0 では、テンプレート関数の宣言と実装をヘッダーと .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 の気まぐれであると推測する理由です。
助けてくれてありがとう!! JD