在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作为参数的构造函数?
答案 0 :(得分:3)
在您的通话中:
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);
您不能在标头和源文件中都定义构造函数!