我希望 A 类包含一些数据,而 B 类将包含指向该数据的指针。我通过返回对数据对象 A 的引用的函数提供对数据的访问。如果创建对象 B,则可以访问对象 A,但是如果创建指向 B 的指针,则等效操作会产生分段错误。像这样:
#include <iostream>
#include <vector>
class A {
public:
A(const int pInt) {mInt = pInt;}
void print() {std::cout << mInt << std::endl;}
private:
int mInt; //some data
};
class B {
public:
B() {mP1 = new A(1);} //initialise to 1
~B() {delete mP1;}
A& access() {return *mP1;} //return reference to the data
private:
A* mP1; //pointer to some data
};
int main() {
B vB;
vB.access().print(); //this works.
B *vBptr;
vBptr->access().print(); //Segmentation fault!
std::vector<B*> vVec;
vVec.resize(1);
vVec[0]->access().print(); //Segmentation fault!
}
我猜在创建 B *vBptr 时 B 对象没有被初始化?那么如何创建一个指向自动初始化的 B 对象的指针向量呢?
干杯。