非型パラメーター (具体的には、固定次元の固有行列ですが、問題も存在します) に依存するメンバー変数を使用して、非型のテンプレート化されたクラスを作成しようとしていますint
。わかりやすくするために、メンバー型を typedef しました。これは、メンバー関数が typedef を返すようになるまでうまく機能し、その時点で次のエラーが発生し始めました。
myClass.cpp:10: エラー: 'myClass' の前にコンストラクタ、デストラクタ、または型変換が必要です</p>
少なくとも概念的には、これは私の typedef がテンプレートに依存し、結果として C++ が混乱しているという事実と関係があることを理解しています。問題は、私がさらに混乱していることです。 の単純な挿入をいくつか試しましtypename
たが、何も修正されませんでした。
最小限の実例。
ヘッダ:
template <int i> class myClass
{
public:
typedef int myVector_t;
myClass();
myVector_t myFunc();
};
ソースコード:
#include <myClass.hpp>
template <int i>
myClass<i>::myClass()
{
//blah
}
template <int i>
myClass<i>::myVector_t myClass<i>::myFunc() //<----- Line 10
{
//blah
}
洞察をいただければ幸いです。
編集:答え
以下で説明するように、解決策はtypename
実装にキーワードを含めることですが、宣言には含めません。
typename myClass<i>::myVector_t myClass<i>::myFunc() //<----- Line 10
編集2
固有値から離れて質問を一般化