我有一个类,它在创建对象并将所需的类作为模板参数传递时创建一个智能指针。我有另一个类需要在另一个类中使用该智能指针。
#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++11 支持typedef
s 这样的事情,但我使用的是旧标准 :( 编译这个我遇到了一些糟糕的错误:
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++ 不支持默认整数
编辑:对不起,我改变了一些东西和错误代码。这就是我想要的样子。对不起