gpt4 book ai didi

c++ - 声明为私有(private)时的静态成员变量

转载 作者:IT老高 更新时间:2023-10-28 22:35:07 59 4
gpt4 key购买 nike

当一个静态成员变量在类中声明为私有(private)时,如何定义它?

假设我有以下类声明

class static_demo
{
private:
static int a;

public:
static int b;

void set(int x, int y)
{
a = x;
b = y;
}

void show()
{
cout << "a = " << a << "\n";
cout << "b = " << b << "\n";
}
};

那么下面定义a的语句会导致编译错误。

int static_demo::a;

那么可以在类的私有(private)部分有一个静态数据成员吗?

按照 Greg 添加完整代码

#include <iostream>

using namespace std;

class static_demo
{
private:
static int a;

public:
static int b;

void set(int x, int y)
{
a = x;
b = y;
}
};

int static_demo::a;
int static_demo::b;

int main()
{
static_demo::b = 10;
static_demo::a = 20;

return 0;
}

编译错误是:

static_member_variable.cpp: In function `int main()':
static_member_variable.cpp:20: error: `int static_demo::a' is private
static_member_variable.cpp:26: error: within this context

最佳答案

When a static member variable is declared private in a class, how can it be defined?

与在源(cpp)文件中定义公共(public)静态变量的方式相同。

int static_demo::a = 1;

访问说明符在定义成员时不会给您错误。访问说明符控制成员变量的访问,定义静态变量是允许的。

在 Ideone 上干净地编译 here

编辑:在您发布代码后回答您的问题。
您的问题不是静态成员的定义。该错误是因为您试图访问 main 中的私有(private)静态成员。你不能这样做。

类的私有(private)成员只能在类成员函数内部访问,同样的规则也适用于静态成员。为了能够修改/访问您的静态成员,您必须向您的类添加一个成员函数,然后修改/访问其中的静态成员。

关于c++ - 声明为私有(private)时的静态成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7857989/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com