重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

C++で、以下のようなコードを書いたのですがコンパイルが通りません。
どのようにコードを修正すればコンパイルを通すことができるでしょうか??教えてください。

template <class _T>
class Test;
// 上をclass Test<_T>にしてもコンパイルは通りません

void main()
{
  Test<int> hoge;
}

template <class _T>
class Test
{
public:
  _T val;
  Test():val(0){};
};

/*!
エラー内容:
前方宣言class Test;の場合
'hoge'が未定義のclass'Test<_T>'で使用しています。
  with
  {
    _T=int
  }

前方宣言class Test<_T>;の場合
構文エラー:';'が'<'の前にありません。
構文エラー:'<'
'hoge'が未定義のclass 'Test<_T>'で使用しています。
*/

開発環境:
VisualStudio2005 AcademicEdition
WindowsXP Professional
メモリ:2048MB
CPU:Core2Duo 1.33GHz

よろしくお願いします。

A 回答 (1件)

class Test;



int main ()
{
 Test hoge; // Testが未定義
 return 0;
}

class Test {
public:
 int val_;
 Test (int val) : val_(val) {}
};
とやったらエラーですよね。
これと同じです。
hogeを定義するタイミングで,その型Test<int>が定義できないといけません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確認してみたところ、なるほど確かに、そう言われて問題の個所を訂正したところコンパイルが通りました。

関数のプロトタイプ宣言と混同していたようです。
ありがとうございました。

お礼日時:2009/03/24 18:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!