首页 > 解决方案 > 这里有什么问题?奇怪的错误信息(对我来说)

问题描述

我尝试在 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));
    }    
};

我不知道该说些什么。我认为我已将代码减少到理解所需的最低限度。

标签: c++class

解决方案


看起来您正在尝试调用此构造函数:ClassX(int i, ClassX** owner),但是当您使用 调用它时objects.append(new ClassX (3, (*this)),您没有提供正确的类型来使用该构造函数。

当您使用*this(指向当前正在使用的对象的特殊指针)时,您正在取消引用它,这会产生一个实例ClassX&- 对对象的引用ClassX。这与您在第二个构造函数中指定的双指针不同,因此编译器希望找到具有以下声明的不同构造函数ClassX::ClassX(int, ClassX&)

您可以简单地将构造函数更改为:ClassX(int i, ClassX &owner)


推荐阅读