Здесь находятся файлы, отвечающие за эту ошибку компоновщика (только с указанием файла, пространства имен и имена классов):Пытаясь понять C++: повторяющиеся символы для архитектуры x86_64
// PubSub.hpp:
#ifndef PubSub_hpp
#define PubSub_hpp
namespace PubSub {
class Publisher {}
}
}
#endif
// Client.hpp:
#ifndef Client_hpp
#define Client_hpp
#include "PubSub.hpp"
class Client {
}
#endif
// Scene.hpp:
#ifndef Scene_hpp
#define Scene_hpp
#include "Client.hpp"
class Scene {
}
#endif
код компилируется без ошибок в этом состоянии. Но как только я ввести переменную в PubSub.hpp под пространством имен PubSub, как показано ниже:
// PubSub.hpp:
#ifndef PubSub_hpp
#define PubSub_hpp
namespace PubSub {
class Publisher {}
}
Publisher NetworkEventPublisher("someName");
}
#endif
Я получаю ошибку компоновщика в названии. Я могу найти обходной путь, но я пытаюсь изучить C++, поэтому я спрашиваю, что является причиной этого?
Не определять объекты в заголовках. –
Короче, чем ожидалось :-) Спасибо. –
Связанный: [Статические переменные в C++] (http://stackoverflow.com/questions/3698043/static-variables-in-c/3698179#3698179). В то время как о статических переменных, в частности, ответ также охватывает ваш случай: непонимание того, что делает файл заголовка. – DevSolar