c++ - 这里有什么问题?奇怪的错误信息(对我来说)
问题描述
我尝试在 C++ 中设置一个类,但我收到一条错误消息。有人有什么想法吗?
class ClassX
{
public:
ClassX** _owner;
QVector<ClassX*> objects;
ClassX( size_t start, size_t length, QString type = "" ) {
_owner = nullptr;
}
ClassX(ClassX** owner) {
_owner = owner;
}
ClassX(int i, ClassX** owner) {
_owner = owner;
}
// working
void add(){
objects.append( new ClassX (*this));
}
// not working: error: no matching function for call to ‘ClassX::ClassX(int, ClassX&)’
void add2(){
objects.append( new ClassX (3, *this));
}
};
我不知道该说些什么。我认为我已将代码减少到理解所需的最低限度。
解决方案
看起来您正在尝试调用此构造函数:ClassX(int i, ClassX** owner)
,但是当您使用 调用它时objects.append(new ClassX (3, (*this))
,您没有提供正确的类型来使用该构造函数。
当您使用*this
(指向当前正在使用的对象的特殊指针)时,您正在取消引用它,这会产生一个实例ClassX&
- 对对象的引用ClassX
。这与您在第二个构造函数中指定的双指针不同,因此编译器希望找到具有以下声明的不同构造函数ClassX::ClassX(int, ClassX&)
。
您可以简单地将构造函数更改为:ClassX(int i, ClassX &owner)
。
推荐阅读
- javascript - 从网站接收数据然后触发 lambda 发送电子邮件和备份到 DynamoDB
- python - 运行命令时将数据添加到 json 文件 discord.py
- excel - 行 VBA Excel 的范围
- javascript - 在不返回任何内容的 JavaScript 函数中是否需要返回
- python - 用 scipy 在 Spyder 上阅读 wav
- docker - 如何组织多个 Dockerfile,docker-compose.yaml 和 .dockerignore
- spring - 什么是实体类?
- xamarin - Xamarin webview 中的本机弹出窗口
- php - 无法使用 $_FILES 函数将图像文件发布到给定目录
- python - 如何使用 networkx 访问连接的组件?