У меня есть два класса с одинаковым именем в разных пространствах имен. Я хочу, чтобы один из этих классов ссылался на другой класс. Причина в том, что я перехожу на более новый код и хочу обновить старый код, чтобы просто перейти к более новому коду.
Вот супер простой пример:
namespace project {
namespace legacy {
class Content {
public:
Content(const string& url) : url_(url) { }
string url() { return url_; }
private:
string url_;
};
}} // namespace project::legacy;
namespace project {
namespace current {
class Content {
public:
Content(const string& url) : url_(url) {}
string url() { return url_; }
private:
string url_;
}} // namespace project::current;
Я ожидал, что смогу сделать следующее с project::legacy::Content, но у меня возникли проблемы с некоторыми проблемами компоновщика. Является ли это проблемой того, как я пытаюсь это сделать, или мне нужно более внимательно изучить файлы моего проекта, чтобы увидеть, есть ли у меня какие-то странные проблемы с зависимостями?
#include "project/current/Content.h"
namespace project {
namespace legacy {
class Content {
public:
Content(const string& url) : actualContent_(url) { }
string url() { return actualContent_.url(); }
private:
project::current::Content actualContent_;
};
}} // namespace project::legacy;
Тестовое приложение компилируется нормально, если я пытаюсь сослаться на экземпляр project::current::Content, но если я пытаюсь сослаться на project::current::Content из project::legacy::Content, я получаю:
undefined reference to `project::current::Content::Content(...)`
ОБНОВЛЕНИЕ
Как оказалось, это была проблема GNU Autotoolset и не имела отношения к реальной теме. Спасибо всем за помощь и предложения!
project::current::Content, в шаг ссылки на ваш проект? - person Greg Hewgill   schedule 15.10.2009project::current::Contentв своем тестовом приложении. Я получаю эту ошибку компоновщика только тогда, когда использую устаревший класс, что заставляет меня задаться вопросом, неправильно ли я делаю то же самое имя класса. - person Beau Simensen   schedule 15.10.2009