我有一个非常复杂的类,它包含在另一个类的向量中。我报告了一个更简单的,无论如何它有我能够找到的问题。
// the inner class
class DuffyDuck{
int isblack; // 0 is white, 1 is black
int n_duck;
vector<DuffyDuck> * point_Duck;
public:
DuffyDuck(int isblack):isblack(isblack){
}
void set_point(vector<DuffyDuck> & Abitants){
point_Duck=&Abitants;
}
};
// the complessive class
class DuckCity{
vector<DuffyDuck> DuckAbitants;
public:
DuckCity(int numwhite,int numblack){
for(int i=0;i<(numblack+numwhite);++i){
DuckAbitants.push_back(DuffyDuck(i>=numblack));
DuckAbitants[i].set_point(DuckAbitants);
}
}
};
现在这可行(我在几个函数中使用了 point_Duck),但是如果我在示例“(*point_Duck)[2].n_duck;”中调用它之后执行类似的操作 在一个函数中,项目崩溃了。
只有当我这样做时才会发生这种情况:
DuckCity LittleTown(0,0);
LittleTown=DuckCity(3,5);
在使用了一些调用指针的函数之后。
如果我直接做 LittleTown(3,5) 一切都是正确的。
我希望我解释得足够好。