オブジェクトを作成し、目的のクラスをテンプレートパラメータとして渡すときに、スマートポインタを作成するクラスがあります。そして、別のクラスでそのスマートポインタを使用する必要がある別のクラスがあります。
#include <iostream>
using namespace std;
//スマートポインタクラス
template<typename T>
class IntrusivePtr
{
public:
IntrusivePtr()
{
cout << "IntrusivePtr()";
}
};
//テンプレートでもあるスマートポインタが必要なクラス
template<typename T>
class A
{
public:
A()
{
cout << "A()";
}
typedef IntrusivePtr< A<T> > my_ptr;
};
//スマートポインタを使用するクラス。
template<typename T>
class B
{
public:
B()
{
cout << "B()";
}
typedef A<T>::my_ptr x;
};
int main()
{
B<int> ob;
return 0;
}
これはC++で実現できますか?私は新しいC++11typedef
がこのようなことをサポートしていることを知っていますが、私は古い標準を使用しています:(これをコンパイルするといくつかの悪いお尻のエラーが発生します:
C:\ Users \ jacob \ typedef_template_class-build-desktop-Qt_4_8_1_for_Desktop _-_ MSVC2008__Qt_SDK__Debug .. \ typedef_template_class \ main.cpp:41:エラー:C2146:構文エラー:欠落している';' 識別子'x'の前
C:\ Users \ jacob \ typedef_template_class-build-desktop-Qt_4_8_1_for_Desktop _-_ MSVC2008__Qt_SDK__Debug .. \ typedef_template_class \ main.cpp:41:エラー:C2146:構文エラー:欠落している';' 識別子'x'の前
C:\ Users \ jacob \ typedef_template_class-build-desktop-Qt_4_8_1_for_Desktop _-_ MSVC2008__Qt_SDK__Debug .. \ typedef_template_class \ main.cpp:41:エラー:C4430:型指定子がありません-intと見なされます。注:C++はdefault-intをサポートしていません
編集:申し訳ありませんが、私はいくつかのものとエラーコードを変更しました。これが私が望んでいることです。ごめん