Вызов удаленного конструктора в интерфейсе (C ++) - PullRequest
0 голосов
/ 16 декабря 2018

Мне дали следующий интерфейс в test123_interface.h, и мне трудно создать класс, который использует этот интерфейс:

class test123_interface {
public:
    test123_interface() = delete;

    explicit test123_interface(unsigned int t123_int){};
    virtual ~test123_interface() = default;

private:
    unsigned int t123_int;
};

В моем test123.h у меня есть:

#include "test123_interface.h"

class test123 : test123_interface {
public:

    test123(unsigned int t123_int){};
    virtual ~test123() = default;

private:
    unsigned int t123_int;
};

, а затем в моем test123.cpp у меня есть:

#include "test123.h"

test123::test123(unsigned int t123) {
  this->t123_int = t123;
}

Однако я не могу скомпилировать из-за следующей ошибки: "вызов удаленного конструктора 'test123_interface'"

Чего мне не хватает в моем понимании, так что компилятор не узнает, что я хочу использовать конструктор, который принимает в качестве аргумента неподписанное int?

1 Ответ

0 голосов
/ 16 декабря 2018

В вашем вызове здесь:

test123(unsigned int t123_int){}

Это вызов удаленного конструктора.Вместо этого вызовите правильный конструктор, который вы хотите использовать:

test123(unsigned int t123_int): test123_interface(t123_int){}

Если вы определяете его в файле cpp, выполните:

test123::test123(unsigned int t123): test123_interface(t123_int) {
}

И в заголовке:

test123(unsigned int t123_int);

Вы не можете определить свой конструктор как в заголовке, так и в исходном файле!

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