C ++,演员构造函数,"没有运算符" ="匹配这些操作数

时间:2014-04-22 19:12:06

标签: c++ visual-studio-2013

你好,我的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类元素。据我所知,它可以使用相同的指针作为基类元素。

问候并感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

  

“no operator”=“匹配这些操作数

下面:

table[column][row] = new superBase;

table[a][b]base左值参考。您正在将调用结果传递给new。这会返回指向superBase的指针。这项任务无效。这个会编译

table[column][row] = superBase();

但你会得到object slicing。您需要找到一种方法来存储(智能)指向基类型的指针。

除此之外,您的基类需要一个虚拟析构函数。你不应该直接调用析构函数。