【发布时间】:2019-11-05 10:03:31
【问题描述】:
我有 C1 课:
class C1 : public Print {
public:
C1(int p1, int p2, int p3);
};
我需要在结构 S1 中定义这个类的一个实例:
struct S1{
C1 c1;
};
但是编译器说:
注意:'S1::S1()' 被隐式删除,因为默认定义格式不正确:...
错误:没有匹配的函数调用 'C1::C1() ...
候选人:C1::C1(int, int, int) 注意:候选人需要 3 个参数,提供 0 个
candidate: constexpr C1::C1(const C1&) class C1 : public Print { 候选人需要 1 个参数,提供 0 个
当我编译这段代码时:
Struct S1{
C1 c1(1,1,1);
};
编译器说:
错误:数字常量 C1 c1(1,1,1) 之前的预期标识符;
错误:数字常量前应有 ',' 或 '...'
C1 类的构造函数我不需要调用,后面会调用。我不能只在 C1 代码中删除这个构造函数,因为它是一个库。
当我定义全局变量时没关系:
C1 c1(1,1,1);
【问题讨论】:
-
你可以写
struct S1{ C1 c1 = C1(1,1,1); };或struct S1{ C1 c1{1,1,1}; };。
标签: c++ class constructor