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'