【发布时间】:2016-10-12 23:22:06
【问题描述】:
大家好
注意:我是 C++ 的初学者,边学边自学,如果这是重复的,我也很抱歉,但我还没有找到示例/答案/教程来回答问题,可能我只是没有还没明白呢。
我有一个函数,其标题和实现定义如下:
标题
#ifndef RETURNOBJECT_H
#define RETURNOBJECT_H
#include <QtCore>
#include "enums.h"
class ReturnObject
{
public:
ReturnObject();
ReturnObject(ReturnCode enum_code, const char data);
const char getData();
ReturnCode getCode();
private:
ReturnCode e_code;
const char data_string;
};
#endif // RETURNOBJECT_H
实施
#include "returnobject.h"
ReturnObject::ReturnObject(){
data_string="WARN";
}
ReturnObject::ReturnObject(ReturnCode enum_code, const char data)
: e_code(enum_code)
, data_string(data)
{}
ResultCode ReturnCode::getCode()
{
return e_code;
}
const char ReturnObject::getData()
{
return data_string;
}
请注意,我并不熟悉指针等,但我对每个概念都有相当了解。
目的:
此对象由自定义类函数创建,存储在类中并返回给父类。该对象包含一个自定义的exec() 返回值和来自该类的可能输出消息/数据(我创建了这个,因为对例如QDialog.setResult() 的限制有限,只允许exec() 返回结果为1 或0)。
问题/问题/疑问
调用类:
Private
ReturnObject _ReturnObject;
_ReturnObject = new ReturnObject(ReturnCode::LoginDialog_EmptyLoginPass, "");
提供以下错误:
/home/cx/qt-projects/project-i/loginstatusdialog.cpp:21: error: invalid conversion from 'const char*' to 'char' [-fpermissive]
_ReturnObject = new ReturnObject(ReturnCode::LoginDialog_EmptyLoginPass, "");
^
因此,我从错误中得出结论,第二个参数 -> "" 或 data 是问题所在,因为我很可能没有在构造函数中正确定义此数据类型。
我应该如何在构造函数中定义这个?,而不是"" 使用哪种数据类型?据我了解,它确实具有const 属性。
我尝试过的:
我尝试过使用char、const char、QString,它们都给出了类似的错误。
有什么建议吗?
编译器输出
const char * data解决后
../project-i/loginstatusdialog.cpp: In constructor 'LoginStatusDialog::LoginStatusDialog(QString, QString, QString*, QWidget*)':
../project-i/loginstatusdialog.cpp:21:44: error: use of deleted function 'ReturnObject& ReturnObject::operator=(ReturnObject&&)'
_Return_Object = ReturnObject(1, "");
^
In file included from ../project-i/loginstatusdialog.h:10:0,
from ../project-i/loginstatusdialog.cpp:1:
../project-i/returnobject.h:7:7: note: 'ReturnObject& ReturnObject::operator=(ReturnObject&&)' is implicitly deleted because the default definition would be ill-formed:
class ReturnObject
^~~~~~~~~~~~
【问题讨论】:
-
仔细阅读你的构造函数定义,你有一个错字。
-
另外,
_ReturnObject是一个实现保留标识符,不要使用它。 -
@BaummitAugen 对不起,我不关注。您是否可能指的是我忘记将
*添加到const char* data的可能性,如果是,那么我没有忘记,我刚才从给出的答案中了解到它的存在和意义(因此我仍然C++ 新手),如果不是,请帮助我阐明错误。谢谢 -
是的,这就是我所说的。如果你是故意漏掉的,你的问题是什么?
-
@BaummitAugen 我找到了我的答案,感谢您的帮助,即使我的问题是-2,但一定有人会觉得这个问题很有帮助。再次感谢!