gpt4 book ai didi

c++ - 无法使用访问器设置私有(private)静态成员变量

转载 作者:行者123 更新时间:2023-11-28 00:32:46 27 4
gpt4 key购买 nike

Zombie.h 有一些静态成员变量。包含 Zombie.h 的 Read.cpp 知道需要放入这些变量中的值。我希望 read.cpp 将这些变量设置为

int Zombie::myStaticInt = 4;

Zombie::setStaticVar(4);

我已经尝试了所有我能想到的方法,包括使用公共(public)静态访问器函数,甚至将静态变量本身公开,但我一直收到很多“ undefined reference ”或“无效使用限定名称” “错误。通过查看那些我发现了如何从 Zombie.cpp 设置 Zombie.h 的私有(private)静态成员变量,但我没有 Zombie.cpp 文件,只有 read.cpp。我可以改为从 Read.cpp 设置它们吗?如果可以,如何设置?

// In Zombie.h
class Zombie {
public:
static void setMax(int a_in, int b_in, int c_in) {
a = a_in;
b = b_in;
c = c_in;
}
private:
static int a, b, c;
}

// In read.cpp
#include "Zombie.h"
...
main() {
int Zombie::a; // SOLUTION: Put this outside the scope of main and other functions
int Zombie::b; // SOLUTION: Put this outside the scope of main and other functions
int Zombie::c; // SOLUTION: Put this outside the scope of main and other functions
int first = rand() * 10 // Just an example
int second = rand() * 10 // Just an example
int third = rand() * 10 // Just an example
Zombie::setMax(first, second, third);
return 0;
}

这产生(更新)(将 main 的前三行移到 main() 之外以解决此问题)

invalid use of qualified-name 'Zombie::a'
invalid use of qualified-name 'Zombie::b'
invalid use of qualified-name 'Zombie::c'

最佳答案

您必须在某处定义 a,b,c。到目前为止,您只是声明 它们存在。在某些 .cpp 文件中,在外部范围内,您需要添加:

int Zombie::a;
int Zombie::b;
int Zombie::c;

EDIT 重新编辑,您不能将它们放入方法中。您必须将它放在 .cpp 文件的最外层范围内。

关于c++ - 无法使用访问器设置私有(private)静态成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187682/

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