c代码第43行中“counter::counter”的使用无效
invalid use of ‘counter::counter’ in c code at line 43
我在以下代码中出错无效使用"counter::counter"
这是我的代码:
#include<iostream>
using namespace std;
class counter
{
protected:
int value;
public:
counter ()
{
value=0;
}
counter (int val)
{
value=val;
}
int GetCounter()
{
return value;
}
counter up()
{
value=value+1;
}
};
class NewCounter : public counter
{
public:
NewCounter():counter()
{}
NewCounter(int val):counter(int val)
{}
void Down()
{
value=value-1;
}
};
int main(void)
{
NewCounter con1;
NewCounter con2;
con2.counter(1);
cout<<"Counetr Initially"<<con1.GetCounter()<<endl;
cout<<"Counter initially"<<con2.GetCounter()<<endl;
con1.up();
con2.up();
cout<<"Counter 1 on incrrr---"<<con1.GetCounter()<<endl;
cout<<"Counter 2 on incrrr---"<<con2.GetCounter()<<endl;
con1.Down();
con2.Down();
cout<<"count 1 on down"<<con1.GetCounter()<<endl;
cout<<"count 2 on down"<<con2.GetCounter()<<endl;
return 0;
}
在我看来,您正试图实例化一个NewCounter
对象,并将其数据成员设置为
NewCounter con2;
con2.counter(1);
第二行是非法的,counter
是一个不能像成员函数那样调用的构造函数。但你却这样做:
NewCounter con2(1);
如果你修复了NewCounter
构造函数:,这将起作用
NewCounter(int val):counter(val) {}
在第行:
con2.counter(1);
您正在调用子对象counter
的构造函数。这既愚蠢又违法。相反,您可以调用NewCounter(int)
构造函数,int
将被传递给counter
构造函数:
NewCounter con2(1);
NewCounter con2;
con2.counter(1);
否;counter
不是一个可以调用的函数!
一次性传递构造函数参数:
NewCounter con2(1);
相关文章:
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 无法访问嵌套类.类的使用无效
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- FFMPEG配置文件级别id大小无效
- 错误:从"int"到枚举c++的转换无效
- 如何修复此错误:className::className的无效使用
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- C++-模板嵌套类的引用初始化无效
- 错误:无效的预处理指令 #i 的意思是 #if?
- 多维数组 C++ 中数组下标的类型"int[int]"无效
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 从 'int' 到 'int*' CPP 的转换无效
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息
- C++ PTHREADS - 无效转换无效*(*)()到无效*(*)(无效*)
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 数组下标的类型"float*[float]"无效
- c代码第43行中“counter::counter”的使用无效