cyradg 发表于 2021-3-3 10:31

请教各位C++语言里的派生类对象调用基类函数报错的问题

开发环境还是AVR。{:5_589:}不太记得class是怎么玩的了,请教下各位有一个头文件,比如A.h,代码简单,就下面:
class A
{
public:
    void Open(void)
   {
       //...........................
   }
};
有个头文件,比如B.h,代码如下:
#include "A.h"
class B:public A
{
};
class C:public B
{
};
然后主程序main.cpp,代码如下:
#include "B.h"
#include "A.h"    //加了也没用
。。。。
C c;
c.Open();   //<--------------------------,看不懂哪里错了,难不成我还要在C类里面再写一遍?

cyradg 发表于 2021-3-3 10:55

知道了,是我的派生类生成对象时构造函数没和基类匹配上,不知道为什么报错不定位到对象定义上。

dstboxu 发表于 2021-3-3 12:41

cyradg 发表于 2021-3-3 10:55
知道了,是我的派生类生成对象时构造函数没和基类匹配上,不知道为什么报错不定位到对象定义上。 ...

没看到你写,构造函数啊

cyradg 发表于 2021-3-8 10:06

dstboxu 发表于 2021-3-3 12:41
没看到你写,构造函数啊
谢谢。C++很久没用,我只是举例,还不太熟悉C++,所以没把构造函数写上来,其实构造函数是有的,只是参数有默认值,写成C c,就是调用了A类构造函数并使用默认值,编译器不报错,运行也正常,我写成了C c(),估计编译器认为是一个新的构造函数,不是A那里的,所以编译报错吧,具体我也是不太清楚。用了class类,蛮多报错自己也是看的稀奇古怪,至今还有仅仅只有一个"ld returned 1 exit status"错误提示的没法解决,没有具体的代码错误位置定位,就是把I2C封装成了对象,调用多个I2C对象,其实就是操作多个I2C设备,不同的组合有时会编译出现这个错误,其实函数都是一个,代码都一样,有的组合会报告这个错误,有的组合不会,因为封装的函数代码都一样,所以至今找不到什么原因。
页: [1]
查看完整版本: 请教各位C++语言里的派生类对象调用基类函数报错的问题