-1
我正在艱難的時候這樣做。 基本上我有一個叫做「整數」的類,它是從一個名爲「Item」的抽象基類中派生出來的。 我試圖加起來指針數組的所有元素Integer對象如下:將指針數組的元素添加到整數對象中
class Item
{
public:
virtual void print() = 0;
virtual string getType() = 0;
virtual Item* add(Item *item) = 0;
};
class integer: public Item {
private:
int data;
public:
integer(int _data): data(_data){;}
void print() {
cout << data << "\n";
}
string getType() {
return "INTEGER";
}
integer* add(Item *item) {
if(this -> getType() != item -> getType()) {
throw "TYPE MISMATCH" ;
}
integer* tempInt = dynamic_cast<integer*>(item);
return new integer(this -> data + tempInt -> data);
}
};
void printAll(Item** items, int n) {
for(int i = 0; i < n; ++i)
items[i] -> print();
}
void addPrintAll(Item ** items, int n) {
Item* p = items[0];
for(int i = 1; i < n; i++) {
p = p -> add(items[i]);
}
p -> print();
}
void main()
{
int n = 10;
Item **integers = new Item*[n];
Item **strings = new Item*[n];
// populate lists
for (int i = 0; i < n; i++)
{
integers[i] = new integer(i);
}
try
{
printAll(integers, n); // print integers
addPrintAll(integers, n); // add integers
}
catch(char *e)
{
cout << e;
}
}
現在就在addPrintAll功能線:
p = p -> add(items[i]);
我一邊喊新p上的運算符沒有刪除,從而導致內存泄漏。 有沒有更好的方法來做到這一點?
使用'STD ::矢量和智能指針。 – vsoftco
@vsoftco這是一個任務,我被迫使用C風格的數組和指針:( – Pantsuu