你好,我的 C++ 项目有点问题。
首先我得到了类:
class base
{
protected:
int R, G, B;
public:
base();
~base();
};
第二类:
class superBase :
public base
{
public:
superBase(){R=0; G=0; B=0};
~superBase();
};
最后一个包含基类矩阵的类:
class gameTable : public gameGraphics
{
private:
base** table;
public:
gameTable();
~gameTable();
}
当我构造 gameTable 类时,我构造了 64 个具有从 0 到 255 的随机 R、G、B 值的基础对象。
所以当程序继续进行时,表中的一些我的元素“进化”并成为 superBase 的。所以这是我的问题,我不知道该怎么做。我试过了,
这似乎无法正常工作。
superBase newBase;
table[column][row].~base();
table[column][row] = newBase;
和另一个版本:
table[column][row].~base();
table[column][row] = new superBase;
我的问题是如何将表格的一个元素演变成 superBase 类元素。据我所知,它可以使用与基类元素相同的指针。
问候并感谢您的帮助!
最佳答案
“no operator ”=" matches these operands
这里:
table[column][row] = new superBase;
table[a][b]
是一个 base
左值引用。您将调用 new
的结果传递给它。这将返回指向 superBase
的指针。那个任务不行这个会编译
table[column][row] = superBase();
但你会得到 object slicing .您需要找到一种方法来存储指向基类型的(智能)指针。
除此之外,您的基类需要一个虚拟析构函数。而且您不应该直接调用析构函数。
关于C++,转换构造函数, "no operator "="匹配这些操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228235/