【发布时间】:2013-08-22 07:14:13
【问题描述】:
我有一个基类,它被多个派生类继承。我想创建基类指针的自动指针数组。当我初始化那些自动指针时,我得到了一些编译时错误,然后我尝试这样做
std::auto_ptr<base>pbase[3];
std::auto_ptr<base> b1(new derived1());
std::auto_ptr<base> b2(new derived2());
std::suto_ptr<base> b3(new derived3());
pbase[0] = b1;
pbase[1] = b2;
pbase[2] = b3;
它工作正常,我修复了内存泄漏问题,而我是一个窗口,我不使用 valgrind,我使用 boost 框架来解决泄漏问题。
编译错误:
class A{
public:
std::auto_ptr<base>pbase[2];
}
在 A.cpp 文件中
A::A():pbase[0](new derived1()), pbase[1](new derived2()){
}
我收到错误C2059:syntax error : '['
【问题讨论】:
-
请也发布错误信息。
-
你有虚拟析构函数吗?此外,请使用 unique_ptr 和 shared_ptr 而不是 auto_ptr。考虑使用 std::vector 来存储您的指针。
-
auto_ptr因其怪异的复制行为而被弃用。考虑切换到std::unique_ptr -
不是同一个问题,所以不投票结束重复,而是this has useful answers。
-
还有一件事;我想这只是一个错字,但您正在访问
pbase[3],它会调用未定义的行为
标签: c++ visual-studio-2010 visual-c++ auto-ptr