C ++ объявляет статический объект в классе

Я пытаюсь объявить статический объект класса A, который я написал в другом классе B, например:

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: неразрешенный внешний символ "private: статический класс A B :: obj1"

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос