首页 > 解决方案 > 为类中声明的变量定义一个值

问题描述

我在 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();
}

标签: c++

解决方案


我有点困惑为什么你的编译器会给你那个特定的错误,但是你的代码中有一个错误。您不能将可执行语句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();
}

另请阅读这篇文章:为什么“使用命名空间标准;” 被认为是不好的做法?

随时要求进一步解释和/或澄清。


推荐阅读