【发布时间】:2022-01-15 21:27:57
【问题描述】:
在第二个类中,我只想将数字添加到字符串中,我收到错误“main.cpp:38:19: error: ‘virtual void NumericInput::add(char)’ is private in this context 38 |输入->添加('1');'每次我为 Numeric 对象添加类。我在这里做错了什么,不是所有的东西都已经公开了吗?谢谢!!
#include <string>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
class TextInput
{
public:
string s="";
virtual void add(char c)
{
s+=c;
}
string getValue()
{
return s;
}
};
class NumericInput : public TextInput
{
//modified
void add(char c)
{
if(isdigit(c))
{
s+=c;
}
}
};
int main()
{
NumericInput* input = new NumericInput();
input->add('1');
input->add('a');
input->add('0');
cout<<input->getValue();
}
【问题讨论】:
-
要么将您的
NumericInput设为结构体,要么将您的方法公开 -
“不是所有的东西都已经公开了吗?” 关键字
class使每个成员private除非另有明确说明。如果您改为使用struct,则成员将默认为public。 C/C++ Struct vs Class -
顺便说一句,
std::sting类初始化为空字符串;所以你不需要。
标签: c++ class object polymorphism