c++ - 为类中声明的变量定义一个值
问题描述
我在 C++ 中使用继承,但发现以下错误:'s' 没有命名类型。
有人可以解释一下是什么问题吗?
#include<iostream>
using namespace std;
class a
{
public:
int s,i;
i=10;
};
class b:public a
{
public:
void print()
{
cout<<s;
}
};
int main()
{
b o;
o.print();
}
解决方案
我有点困惑为什么你的编译器会给你那个特定的错误,但是你的代码中有一个错误。您不能将可执行语句i=10;
作为类定义的“独立”部分;通常,任何此类代码都必须是成员函数主体的一部分。
但是,您可以在声明中为变量提供默认(初始)值。因此,您可以这样做(我还为s
变量添加了一个“任意”初始值,因此您可以看到代码正在运行):
#include<iostream>
using std::cout;
class a {
public:
int s = 42, i = 0; // You can put initial (i.e. default) values for the members in the declarations
// i = 10; // Can't have this line here
};
class b :public a {
public:
void print()
{
cout << s;
}
};
int main()
{
b o;
o.print();
}
另请阅读这篇文章:为什么“使用命名空间标准;” 被认为是不好的做法?
随时要求进一步解释和/或澄清。
推荐阅读
- mongodb - MongoDB获取项目数组中的item.field列表
- java - 最后在与特定键匹配的数组中添加元素
- function - 在 Haskell 中减少命题的大小
- python - 如何使用“matplotlib.pyplot.specgram”绘制频带
- python - Django 需要帮助重写搜索/过滤表单
- ruby-on-rails - 路由错误,rails api 请求没有路由匹配
- python - 在 VSCode 中使用 .ipynb 导入 .py
- javascript - Socket.io 和 Node.js 上的 Angular 聊天
- r - R 中的 tobit 模型,使用 censReg(),具有截尾观察值的任意观察值
- java - 读取端口数据 COMM (SerialEventListener) - Java