重要なお知らせ

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

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

こんにちは、VisualStudio2003でtemplateの使い方の学習中です。
言葉で書くと難しくなりますのでソースを書きます。
<h>
template<class MYTYPE> class CTreeMng
{
public:
CTreeMng(void);
~CTreeMng(void);
typedef enum {
SUCCESS// 成功
} RESULT;
RESULT SetPotision( NODE_POSITION pos );
};
<cpp>
template<class MYTYPE> CTreeMng<MYTYPE>::CTreeMng(void){}
template<class MYTYPE> CTreeMng<MYTYPE>::~CTreeMng(void){}
template<class MYTYPE> CTreeMng<MYTYPE>::RESULT CTreeMng<MYTYPE>::SetPotision( ){}
---------------------------------------------------------
上記の場合、
template<class MYTYPE> CTreeMng<MYTYPE>::RESULT CTreeMng<MYTYPE>::SetPotision( )
が、以下エラーとなります。
TreeMng.cpp(31): warning C4346: 'CTreeMng<MYTYPE>::RESULT' : 依存名は型ではありません。
仮に、
template<class MYTYPE> RESULT CTreeMng<MYTYPE>::SetPotision( )
でも、
TreeMng.cpp(31): error C2143: 構文エラー : ';' が 'CTreeMng<MYTYPE>::SetPotision' の前にありません。
となります。
正しい書き方は、どのように書けばよろしいのでしょうか?
アドバイスお願いします。

A 回答 (1件)

 こんばんは。



 ×template<class MYTYPE> CTreeMng<MYTYPE>::RESULT CTreeMng<MYTYPE>::SetPotision( ){}
 ↓
 ○template<class MYTYPE> CTreeMng<MYTYPE>::RESULT CTreeMng<MYTYPE>::SetPotision(NODE_POSITION pos){}

 余談ですが、実の所、テンプレートはヘッダーのみに書くものです。

この回答への補足

#余談で頂いたアドバイスで納得しました。
クラステンプレートはクラスのテンプレート(雛形)
よってヘッダに書くもの
クラスではない。
ありがとうございます。

補足日時:2008/09/20 19:19
    • good
    • 0
この回答へのお礼

すみません。質問の際に書くのを忘れていました。
template<class MYTYPE> CTreeMng<MYTYPE>::RESULT CTreeMng<MYTYPE>::SetPotision
( NODE_POSITION pos ){
}
としたのですが、やはり同じエラーでした。
#余談ですが、実の所、テンプレートはヘッダーのみに書くものです。
あ、そうなんですか、ヘッダにすべて書けば確かに上記問題は解決します。
ありがとうございました。

お礼日時:2008/09/20 19:09

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