调用构造函数出错
Error calling the constructor
我对OOP有点陌生,我在派生类内部的构造函数中遇到了一个小问题。
我有以下代码:
class Functionar{
protected:
char nume[20];
int cnp;
public:
Functionar(char *n,int c){strcpy(nume,n); cnp=c;}
virtual void Afisare();
};
void Functionar::Afisare()
{
cout<<"Nume: "<<nume<<endl<<"CNP: "<<cnp<<endl;
}
class Permanent:public Functionar{
protected:
int salariu;
int nrorelucrate;
public:
//Permanent(char *n,int c,int s,int nr): Functionar(char *n,int c),salariu(s),nrorelucrate(nr){}
Permanent(char *n,int c,int s,int nr)
{
Functionar(char *n,int c);
salariu=s;
nrorelucrate=nr;
}
//void Afisare();
};
main()
{
Functionar Claudiu("Claudiu",495);
Claudiu.Afisare();
}
为变量和函数的名称感到抱歉。它们看起来可能有点奇怪。这个想法是我想在派生类中使用名称和cnp的基构造函数创建一个构造函数。
我有几个错误:
In constructor 'Permanent::Permanent(char*, int, int, int)':
[Error] no matching function for call to 'Functionar::Functionar()'
[Note] candidates are:
[Note] Functionar::Functionar(char*, int)
[Note] candidate expects 2 arguments, 0 provided
[Note] Functionar::Functionar(const Functionar&)
[Note] candidate expects 1 argument, 0 provided
[Error] expected primary-expression before '(' token
[Error] expected primary-expression before 'char'
[Error] expected primary-expression before 'int'
C:UsersStefanDesktopProbleme Culegere POOproblema12.cpp In function 'int main()':
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
我不明白为什么'Functionar::Functionar()'没有匹配。谢谢你。
使用
Permanent(char *n,int c,int s,int nr) :
Functionar(n,c)
//your other variables go here
{
}
如果没有初始化列表,则需要默认构造函数,因为该类试图默认初始化其基类。
即使你有Functionar
的默认构造函数,你的版本也只会创建一个临时对象,该对象将在;
之后被销毁,而不会像你期望的那样初始化基。
应该使用构造函数的初始化列表来调用基类的构造函数(特别是对于带参数的函数),例如:
Permanent(char *n, int c, int s, int nr) : Functionar(n, c), salariu(s), nrorelucrate(nr) {}
相关文章:
- 使用dynamic_cast和构造函数时出错
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 使用根/C++时出错:没有匹配的构造函数来初始化'TTree'
- 使用类的构造函数时出错
- 在 c++ 的构造函数中分配对象向量时出错
- 调用 cv::stereoBM 构造函数时出错
- 尝试从 C++ 中的构造函数从类继承时出错
- 尝试使用构造函数创建对象时出错
- 类中私有结构的构造函数出错
- 在构造函数中分配数组时出错
- 不可复制的对象、映射和shared_ptr:复制构造函数中出错
- 我的类默认构造函数出错
- 在另一个模板类构造函数中使用typdef模板时出错
- C++从构造函数返回值时出错
- 尝试在<int>构造函数中使用 vector 启动类时出错
- 在c++中初始化构造函数中的静态成员变量时出错
- 具有std::原子成员变量的类的复制构造函数/赋值运算符出错
- 使用复制构造函数时出错
- C2057构造函数初始化列表中的常量值定义出错
- 在模板类中使用 r 和 l 值构造函数时出错