Это создаст только 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. Любые слова мудрости?