VC6ではコンパイルできるテンプレートがVC8でNGです – プログラミング – Home

VC6ではコンパイルできるテンプレート...
 
通知
すべてクリア

[解決済] VC6ではコンパイルできるテンプレートがVC8でNGです


え~いち
 え~いち
(@え~いち)
ゲスト
結合: 18年前
投稿: 78
Topic starter  

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関連でもないようなのですが・・・
漠然とした質問で申し訳ございませんが、何かお気づきな点がありましたらアドバイスを
お願いします


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 4年前
投稿: 828
 

> 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);

で、良いようにも思いますが・・・。
どうなんだろ。


返信引用
え~いち
 え~いち
(@え~いち)
ゲスト
結合: 18年前
投稿: 78
Topic starter  

仲澤様
回答ありがとうございました
typenameの使い方が間違っていました
・・・つまり、typenameとテンプレートをよく理解していない能力不足でした


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました