Zombie.h имеет несколько статических переменных-членов. Read.cpp, который включает в себя Zombie.h, знает значения, которые должны быть в этих переменных. Я хочу, чтобы read.cpp устанавливал эти переменные с чем-то вроде строк
int Zombie::myStaticInt = 4;
or
Zombie::setStaticVar(4);
Я перепробовал все, что мог придумать, в том числе использовал общедоступную статическую функцию доступа и даже сделал общедоступными сами статические переменные, но я получаю много ошибок «неопределенная ссылка» или «недопустимое использование квалифицированного имени». Изучив их, я узнал, как установить частные статические переменные-члены Zombie.h из Zombie.cpp, но у меня нет файла 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'