我有一個代碼的幾個問題,它具有與此示例類似的結構。它不起作用!我認爲主要的問題是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