でテンプレートクラスとinit私はテンプレートクラス、Fooの持っている:そして、私は私のFooクラスの属性であり、これは、テンプレートパラメータとしてのFooクラスを取るのAttrと呼ばれる別のテンプレートクラスを持っているC++コンストラクタ
template <class A, class B>
class Foo
{
public:
Foo(A &aInstance);
private:
Attr<Foo> _attr;
};
を自体。
template <class C>
class Attr
{
class SomeType
{
SomeType();
~SomeType();
};
Attr(const SomeType* st);
~Attr();
private:
Attr();
}
コンストラクタでinit _attr(Attr型)を使い、最初のパラメータをSomeTypeとしてテンプレートからキャストします。
Fooのコンストラクタの実装:
template<class A, class B>
Foo<A, B>::Foo(A &aInstance):
_attr(
(Attr<Foo<A, B> >::SomeType *) aInstance)
{
}
これはコンパイルされません。
エラー:エラーがfooでキャストラインを指し前に、プライマリ・表現予想 ')' トークン
をあたかもSomeTypeが認識されなかったかのように、コンストラクタを実装します。
私は今インスタンスを持っていますが、それでも同じエラーがあります。
最後の編集は無意味なものになっているので、最後の編集をロールバックしました。お願い、それはやめて。他の編集については、これらの*も*既存の回答を妨害する。私はそれらをロールバックしていないが、将来的にしてください*追加の明確化を追加し、既存のコードを変更しないでください。 –