我收到以下错误消息:

conversion from ‘BaseClass’ to non-scalar type ‘DerivedClass’ requested


同时编译如下内容:

AnotherClass response;
DerivedClass message = response.serialize(QString("someStuff"));


我在哪里

BaseClass AnotherClass::serialize( const QString& valueName ) const




class DerivedClass : public BaseClass
{
    ...
    DerivedClass &operator=(const BaseClass &other);
}


有人可以解释这里有什么问题,更重要的是为什么?

最佳答案

DerivedClass message = response.serialize(QString("someStuff"));


这是复制初始化,而不是赋值,并且operator=甚至都没有起作用。

您要么需要采用BaseClass的构造函数,要么这样编写:

AnotherClass response;
DerivedClass message;
message = response.serialize(QString("someStuff")); // assignment

关于c++ - 从基础创建派生类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21876426/

10-09 20:23