你好,我的C ++项目有点问题。
首先我上课了:
class base
{
protected:
int R, G, B;
public:
base();
~base();
};
和第二节课:
class superBase :
public base
{
public:
superBase(){R=0; G=0; B=0};
~superBase();
};
和包含基类矩阵的最后一个类' es:
class gameTable : public gameGraphics
{
private:
base** table;
public:
gameTable();
~gameTable();
}
当我构造gameTable类时,我构造了64个基础对象,RANDOM R,G,B值从0到255。
因此,当节目继续进行时,表格中的一些元素会逐渐发展。并成为超级基地。所以这是我的问题,我不知道该怎么做。我试过这个,
似乎无法正常工作。
superBase newBase;
table[column][row].~base();
table[column][row] = newBase;
和另一个版本:
table[column][row].~base();
table[column][row] = new superBase;
我的问题是如何将表的一个元素演变为superBase类元素。据我所知,它可以使用相同的指针作为基类元素。
问候并感谢您的帮助!
答案 0 :(得分:1)
“no operator”=“匹配这些操作数
下面:
table[column][row] = new superBase;
table[a][b]
是base
左值参考。您正在将调用结果传递给new
。这会返回指向superBase
的指针。这项任务无效。这个会编译
table[column][row] = superBase();
但你会得到object slicing。您需要找到一种方法来存储(智能)指向基类型的指针。
除此之外,您的基类需要一个虚拟析构函数。你不应该直接调用析构函数。