Qt - неразрешенный тип функции перегрузки - PullRequest
1 голос
/ 01 июня 2011

Я получаю следующую ошибку при попытке собрать мое приложение в Qt Creator:

ошибка (строка 3): нет соответствующей функции для вызова ‘QGraphicsScene :: QGraphicsScene ()’

Источник для этого просто (имя файла gamscene.cpp):

#include "gamescene.h"

GameScene::GameScene() : QGraphicsScene(parent)
{

}

Я гуглил и видел некоторые похожие проблемы, но я не совсем понимаю ответы.

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Мы унаследованы от класса QGraphicsScene следующим образом:

class ImprintTemplateScene : public QGraphicsScene
{
    Q_OBJECT
public:            
    ImprintTemplateScene(QObject *parent = 0);

...
};

Обратите внимание, что родительский параметр - это параметр, передаваемый конструктору.Реализация конструктора выглядит так:

ImprintTemplateScene::ImprintTemplateScene(QObject *parent)
    :   QGraphicsScene(parent),
        sceneMode(mode_normal),
        editingTextBox(0)
{   
}
0 голосов
/ 02 июня 2011

parent в вашей строке 3 должен прийти откуда-то.Поскольку вы определяете конструктор GameScene, вероятно, это действительно аргумент для конструктора (я не знаком с Qt, поэтому не знаю, каким должен быть тип parent - используйте соответствующий тип в вашем реальном коде):

GameScene::GameScene(TypeOfParent parent) : QGraphicsScene(parent)
{
}

Или, если имеет смысл вызывать конструктор QGraphicsScene без родителя, тогда:

GameScene::GameScene() : QGraphicsScene()
{
}

может быть возможным.Вероятно, нет, так как сообщение об ошибке указывает на отсутствие конструкторов с нулевым аргументом QGraphicsScene.

Кроме того, вы не опубликовали определение класса, но, учитывая вашу попытку определения конструктора, я предполагаю, что GameSceneпублично наследуется от QtGraphicsScene.Поэтому, когда вы создаете GameScene, вам нужно вызвать конструктор суперкласса (как вы пытаетесь это сделать).Но любые аргументы конструктора суперкласса могут исходить только от аргументов вашего конструктора.Поэтому, если конструктору суперкласса требуется аргумент, ваш конструктор будет нуждаться в этом аргументе, чтобы он мог передать его конструктору суперкласса (если только для вас не имеет смысла передавать конструктору суперкласса аргумент постоянной времени компиляции).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...