VC++6.0で開発していたアプリケーションをVC++8.0で開発できるように修正しています
その中で以下のコードがコンパイルできません
(VC++6.0ではコンパイルできていましたが、VC++8.0ではNG)
---------------------------------------------
template <class TYPE, class ARG_TYPE>
class fff
{
protected:
struct CNode
{
CNode* pNext;
CNode* pPrev;
TYPE data;
};
public:
fff();
~fff();
fff<TYPE, ARG_TYPE>::CNode* NewNode (fff::CNode* pPrev, fff::CNode* pNext);//
エラー1
};
template <class TYPE, class ARG_TYPE>
inline fff<TYPE,ARG_TYPE>::fff()
{
}
template <class TYPE, class ARG_TYPE>
inline fff<TYPE,ARG_TYPE>::~fff()
{
}
template <class TYPE, class ARG_TYPE>
inline fff<TYPE, ARG_TYPE>::CNode* fff<TYPE,ARG_TYPE>::NewNode (fff::CNode*
pPrev, fff::CNode* pNext)//エラー2
{
fff::CNode* pNode = NULL;
return pNode;
}
---------------------------------------------
「fff<TYPE, ARG_TYPE>::CNode」を記述するところでエラーが出てしまいます
CNodeはこのコード内ではfff<TYPE, ARG_TYPE>::と記述しなくても解決できると思い削
除してみましたが、エラーコードが変わるだけで解決できません
typename関連でもないようなのですが・・・
漠然とした質問で申し訳ございませんが、何かお気づきな点がありましたらアドバイスを
お願いします
> typename関連でもないようなのですが・・・
そですか?
typename fff<TYPE, ARG_TYPE>::CNode* NewNode( typename fff::CNode* pPrev,
typename fff::CNode* pNext);
または
CNode* NewNode( typename fff::CNode* pPrev, typename fff::CNode* pNext);
で、良いようにも思いますが・・・。
どうなんだろ。
仲澤様
回答ありがとうございました
typenameの使い方が間違っていました
・・・つまり、typenameとテンプレートをよく理解していない能力不足でした