我有一个代码的几个问题,它具有与此示例类似的结构。它不起作用!我认为主要的问题是push_back函数,我需要其他范围(我需要在操作过程中构建一个类的向量,并且在内部有单个类的指针)。任何人都知道如何解决它?由于指向类中对象的指针:push_back和指针冲突
#include <vector>
using namespace std;
class meow {
public:
int b;
meow() {
b = 1;
}
meow(int a) {
b = a;
}
};
class dog {
public:
vector<meow> H;
vector<vector<meow>::iterator> HP;
dog()
: HP(2), H(2) {
HP[0] = H.begin();
HP[1] = H.begin() + 1;
}
};
int main() {
vector<dog> WOOF(1);
WOOF.push_back(dog());
meow ok(2);
(*WOOF[1].HP[0]) = ok;
cout << (*WOOF[0].HP[0]).b << endl;
cout << (*WOOF[1].HP[1]).b << endl;
}
OK,我明白了这笔交易,所以是有可能做这样的事情,在这我不会在代码的push_back后使用事件?
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
class meow {
public:
int b;
meow() {
b = 1;
}
meow(int a) {
b = a;
}
};
class dog{
public:
vector <meow> H;
vector<vector<meow>::iterator> HP;
dog():
HP(2),H(2){
}
void Referring(){
HP[0]=H.begin();
HP[1]=H.begin()+1;
}
};
int main() {
vector<dog> WOOF(1);
WOOF.push_back(dog());
for(int i=0;i<WOOF.size();++i){
WOOF[i].Referring();
}
meow ok(2);
(*WOOF[1].HP[0]) = ok;
cout << (*WOOF[0].HP[0]).b << endl;
cout << (*WOOF[1].HP[1]).b << endl;
}
什么“不起作用”?你期望会发生什么,而发生什么呢?你有没有收到任何错误信息?你真的不清楚发生了什么问题...... – sth
这种情况下的经典问题是,push_back会将整个向量移动到内存中,任何指向它的指针都会变成悬挂的。 – user2672165