我的問題是我有一個基類和3個子類,我想創建一個向量,我可以放置所有3個子類的代表元素。下面是它處理從文件從文件讀入指針向量的C++
vector<Robot*> robots;
vector<Mac> mac;
vector<Eco> eco;
vector<Pro> pro;
vector<int> charge;
vector<int> deliver;
try {
string s;
ifstream f;
do {
cout << "Add meg a filenevet" << endl;
cin >> s;
f.open(s.c_str());
} while (!f.good());
cout << "adatok beolvasasa..." << endl;
int napok;
if (!(f >> napok)) throw 1;
charge.resize(napok);
deliver.resize(napok);
for (int i = 0; i<napok; i++) {
if (!(f>>charge[i])) throw 1;
if (!(f>>deliver[i])) throw 1;
}
string type, name;
int battery;
int m = 0; int e = 0; int p = 0;
std::string line;
while (std::getline(f, line)) {
stringstream ss(line);
if (ss >> type && ss >> name && ss >> battery) {
if (type=="Mac") {
cout << "mac" << endl;
Mac r = Mac(name,battery);
mac.push_back(r);
robots.push_back(&mac[m]);
m++;
};
if (type=="Eco") {
cout << "eco" << endl;
Eco r = Eco(name,battery);
eco.push_back(r);
robots.push_back(&eco[e]);
e++;
}
if (type=="Pro") {
cout << "pro" << endl;
Pro r = Pro(name,battery);
pro.push_back(r);
robots.push_back(&pro[p]);
p++;
};
}
}
到目前爲止是這種情況,它編譯和運行,以及閱讀代碼的一部分,但是當我嘗試訪問的功能前robots[i].getBattery();
程序凍結。 似乎指針只是指向無處但我不知道爲什麼:(
你打電話給'機器人[i] .getBattery();'?如果'mac','eco'和'pro'被破壞,他們的成員也是如此。這導致「機器人」持有指向無效對象的指針。 – Oswald
它們不會被破壞:/將這一切全部寫入主函數(希望它會使它更容易一些),我也將它稱爲主函數。 – Andesz