Я надеялся, что смогу получить некоторые разъяснения по статическим переменным класса.
Например:
У меня есть два разных класса, которые выполняют совершенно разные функции, альфа и бета. В альфе я объявляю статическую переменную типа бета, поэтому она выглядит так:
//alpha.h
#pragma once
#include <iostream>
#include "beta.h"
class alpha{
public:
alpha(){
}
static beta var;
void func(){
var.setX(3);
}
void output(){
}
};
//beta.h
#pragma once
#include <iostream>
using namespace std;
class beta{
public:
int x;
char y;
beta(){
x = 0;
y = ' ';
}
void setX(int _X){
x = _X;
}
};
//main.cpp
#include <iostream>
#include <iomanip>
#include "alpha.h"
using namespace std;
int main(){
alpha x, y, z;
x.func();
}
Теперь, когда я пытаюсь скомпилировать это, я получаю неразрешенную внешнюю ошибку:
ошибка LNK2001: неразрешенный внешний символ "public: static class beta
alpha :: var "(? var @ alpha @@ 2Vbeta @@ A)
Я не уверен, что изменить или что еще мне нужно добавить, чтобы что-то вроде этого работало. Я хочу, чтобы x, y и z по существу разделяли одну и ту же бета-переменную. Я думаю, что могу сделать то же самое, просто передавая по одной бета-переменной в каждую из них. Но я хочу знать, возможно ли сделать то же самое, используя ключевое слово static, потому что статические члены класса имеют одинаковое значение в любом экземпляре класса. Если у меня нет этого определения неправильно.