※ ChatGPTを利用し、要約された質問です(原文:テンプレートを使用した時のbcc32とclの違い)
テンプレートを使用した時のbcc32とclの違い
このQ&Aのポイント
c++でテンプレートを使ったクラスを作成しましたが、VC++6.0のコンパイラclでは問題なくコンパイルできるのに、Borland C++ Compailerのbcc32ではコンパイルできません。
エラーメッセージは「エラー E2040 Test.h 10: 宣言が正しく終了していない」と表示されます。
なぜ、clでは問題なくコンパイルできるのにbcc32ではコンパイルできないのでしょうか。ご存知の方、教えていただけないでしょうか。
c++を勉強していてわからない事があり、質問させていただきたいと思います。
c++でテンプレートを使ったクラスを以下のように作りました。
//test.h
template <class T>
class Test
{
public:
Test();
T m_X;
};
template <class T>
Test<T>::Test<T>() //<<<実際のファイルではここが10行目です
{
m_X = 10;
}
//test.cpp
#include <iostream.h>
#include "Test.h"
void main() {
Test<int> t;
cout << t.m_X << endl;
}
これをVC++6.0のコンパイラclでは問題なくコンパイルできるのですが、Borland C++ Compailerのbcc32でコンパイルすると、「エラー E2040 Test.h 10: 宣言が正しく終了していない」とのエラーメッセージがでます。なぜ、clでは問題なくコンパイルできるのにbcc32ではコンパイルできないのでしょうか。
ご存知の方、教えていただけないでしょうか。よろしくお願いします。
お礼
回答、ありがとうございます。<T>の使い方を間違っていたのですね。clでは特に問題なくコンパイルできていたので間違いに気付きませんでした。