Это создаст только 1 экземпляр каждого объекта во время выполнения и предотвратит переопределения. Однако имейте в виду, что все файлы, которые содержат файл .h, будут использовать один и тот же экземпляр этих двух объектов, поэтому вам нужно быть осторожным при обращении к ним.

тствую всех.

Кажется, я цепляюсь за деньги, но нигде не могу найти решение. В любом случае, пойдем дальше и объясним.

У меня есть программа, состоящая из трех файлов; main.ccp, add.h, add.cpp.

Я объявляю класс 'SA' в add.h и все мои функции определены в add.cpp

additional.h

class SA {
    ...
public
    int x;
} Obj1, Obj2;

main.ccp

#include "additional.h" 

int main() {

    Obj1.x = 5;

    ...
}

Это дает мне ошибку ссылки при компиляции: ошибка LNK2005: «класс SA Obj1» (? Obj1 @@ 3VSA @@ A) уже определен в main.obj

Единственное определение объекта происходит в add.h, а не где-либо еще. Программа прекрасно компилируется, если объявляет объекты в главном, а не в заголовке:

main.ccp

#include "additional.h" 

int main() {

    SA Obj1;
    Obj1.x = 5;

    ...
}

Проблема заключается в том, что я хочу использовать объекты в основном в add.cpp, но все же нужно инициализировать несколько открытых значений через main.cpp. Любые слова мудрости?

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

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