Я пытаюсь объявить статический объект класса А, что я написал в другом классе В, как это:C++ объявить статический объект в классе
class A // just an example
{
int x;
public:
A(){ x = 4; }
int getX() { return x; }
};
class B
{
static A obj1; // <- Problem happens here
public:
static void start();
};
int main()
{
B::start();
}
void B::start()
{
int x = obj1.getX();
}
То, что я хочу добиться того, чтобы получите int x
в B::start()
равным int x
в class A
(4).
Я пробовал все это за прошлый час, и все, что я понял, было то, что C++ не разрешает объявления статических объектов. Это верно?
Если это так, вот мой вопрос. Как я могу получить тот же результат? Каковы мои доступные обходные пути? Помня о том, что остальная часть моего кода зависит от того, какие функции в классе B статичны.
Ошибка
ошибка LNK2001: неразрешенный внешний символ "частный: статический класс A B :: obj1"
Спасибо!
Вам не хватает определения объекта. Добавьте его за пределы класса: 'A B :: obj1;' – dasblinkenlight
Вы должны включить сообщения об ошибках, которые вы получаете. –
http://stackoverflow.com/a/12574407/962089 – chris