没有对基类函数的匹配函数调用
C++: No matching function call to base class function
class Dobberman: public Dog
{
public:
Dobberman()
: Dog()
{
strncpy(_breed, "Dobberman", 20);
}
Dobberman( const char *name, const unsigned int age, const unsigned int pedigreeNo)
: Dog(name,age), _pedigreeNo(pedigreeNo)
{
}
~Dobberman()
{
}
当我尝试编译时,我得到了上面的错误。老实说,我也不知道为什么。
类Dog有一个带有三个参数的构造函数
Dog(const char *name, const unsigned int age, char *breed)
但是在类Dobberman
的构造函数中你调用带有两个参数而不是三个参数的Dog构造函数
Dobberman( const char *name, const unsigned int age, const unsigned int pedigreeNo)
: Dog(name,age), _pedigreeNo(pedigreeNo) { }
^^^^^^^^^^^^^
因此编译器发出一个错误,它无法在类Dog
中找到具有两个参数的构造函数。
考虑在任何情况下这个构造函数
Dog(const char *name, const unsigned int age, char *breed)
{
strncpy(_name, name, 20);
_age = age;
strncpy(_breed, breed, 20);
}
定义不正确。对于第三个形参,使用字符串字面值作为实参。所以第三个参数必须声明为const char *breed
在构造函数体中,而不是
strncpy(_name, name, 20);
strncpy(_breed, breed, 20);
你必须写
strncpy(_name, name, 20);
_name[19] = ' ';
strncpy(_breed, breed, 20);
_breed[19] = ' ';
类的析构函数也应该声明为虚函数。例如
virtual ~Dog() {}
或
virtual ~Dog() = default;
相关文章:
- 使用宏调用类函数
- 从 c++ 中派生类的析构函数调用虚函数
- 使用另一个函数调用一个函数(都在类中)时出现问题.没有错误代码C++
- C++虚拟函数:基类函数是调用的,而不是派生的
- Python在不引用类名的情况下调用类函数
- 需要"模板<>"语法 --> 通过函数调用类模板
- C++ - 从另一个类构造函数调用类构造函数
- 从 LUA 脚本调用类函数C++
- 在定义变量时调用类函数
- 在没有限定的情况下从 T 构造函数调用类 T 的纯虚拟实现?
- 你如何调用类函数,但使用不同的类对象
- 从构造函数调用类函数或使用智能指针
- 在 c++ 中通过指针从另一个类调用类函数
- 加载cygwin C++dll,调用类函数
- 不能调用类函数(参数化类)
- c++从非成员调用类函数/数据
- 通过信号和时隙系统调用类函数
- 子类中的虚拟函数调用父函数一次
- 通过此指针从静态函数调用类函数
- 通过模板函数调用类函数