Повторяющиеся символы с реализацией только заголовка [дубликат] ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Повторяющиеся символы с реализацией только заголовка [дубликат]

Сообщение Anonymous »

У меня есть класс C++, который объявлен и реализован в заголовочном файле. Я выбрал это, потому что невозможно легко переключаться между сборками Debug и Release из-за _GLIBCXX_DEBUG и предварительно скомпилированных библиотек. Например, если я определю _GLIBCXX_DEBUG, Boost выйдет из строя из-за изменений ABI в исходных файлах.

Реализация только заголовка создала проблему с повторяющимися символами. . Например, в приведенном ниже классе оператор == и обмен нечленами будут создавать несколько определенных символов.

Код: Выделить всё

// Foo.hpp
namespace Bar
{
template
class Foo
{
...
};

bool operator==(const Foo& a, const Foo& b) {
..
}
}

namespace std
{
template 
void swap(Bar::Foo& a, Bar::Foo& b)
{
a.swap(b);
}
}
Когда декларация и реализация были разделены, файлы (Foo.hpp и Foo.cpp) скомпилировались и скомпоновались нормально.

Что нужно сделать, чтобы это правильно скомпилировать и скомпоновать?

Подробнее здесь: https://stackoverflow.com/questions/134 ... ementation

Вернуться в «C++»