我遇到问题,我在类“List”中有一个指向基类对象“元素”的指针。在某些情况下,我需要Element是一个更专门的类型“过渡”。过渡来源于元素。但是当我从指向Element对象的指针创建一个Transition对象时,指针现在与我的矩阵类List脱钩。与基础对象位于相同位置的派生对象
在我迄今为止的研究中,我已经读过,但这是创建派生对象的方式。 但这不是我想到的......我想让派生对象与基类指针(指向Element类的指针,“last”)位于相同的位置。 我该怎么做?
示例代码:
#include <iostream>
class Element{
public:
Element(){
member = 0;
}
virtual void set_member(int i){}
void print_member(){
std::cout << member << std::endl;
}
protected:
int member;
};
class Transition: public Element{
public:
void set_member(int i){
member = i;
}
};
class List{
public:
List(){
last = new Element;
}
Element* get_last(){
return last;
}
void print(){
last->print_member();
}
private:
Element* last;
};
int main(){
List list;
Element* last = list.get_last();
last = new Transition; // creates completely new entity.
// I wanted to make a derived object
// from Element at the same location
// as the Elememt object though
last->set_member(1);
last->print_member(); // returns newly assigned value
list.print(); // returns default value of Element type
// but I wanted itto return newly assigned value
}
请注意,您的代码书面至少有两个内存泄漏。这可能是值得描述你实际尝试做什么的,这样你可以找到解决你真正问题的答案(即你解决方案的方式)。 – Lionel
那么,我真正想要做的是通过最后一个指针来访问列表的最后一个元素,这个指针是我的列表类的一个属性。然后我想更改最后一个列表元素的属性。 –