目前我的代码如下:
class A
{
public:
//A(A&&);
A& operator=(const A&);
std::vector<std::shared_ptr<B>> myVec;
int accessMyFunc() {
return myVec[0]->myFunc();
}
}
class B
{
public:
virtual ~B();
virtual int myFunc() const = 0;
}
class C : public B
{
public:
virtual int myFunc() const override {/* do stuff*/}
}
A makeanA()
{
A temp;
temp.myVec.emplace_back(new C)
return temp;
}
当我运行这个主要
时int main()
{
A theA;
theA = makeanA();
theA.accessMyFunc();
}
我从 - &gt;获得了一个段错误在accessMyFunc中。但是,*myVec[0]
不会出现段错误,我已在A的赋值构造函数中检查了shared_ptrs是否正确复制。为什么这个段错误不是取消引用,而是在方法调用上?特别是当赋值构造函数验证lhs和rhs的shared_ptr都指向同一个点时?
感谢任何帮助。
答案 0 :(得分:0)
所以最终我的错误是处理动态/共享库。我在我的main之外的函数中打开了库,所以当函数返回时,它尝试查找虚拟表导致了段错误