2011-11-16 44 views
0

这可能很简单,我只是一个白痴。错误来自传递std :: string参考

当我尝试编译(Linux操作系统,64位,GCC)这样的:

namespace GUI { 

class Manager 
{ 
... 
    private: 
     bool AddElement(const std::string&, Element*); 

     /// Friend functions 
     friend void Element::AddToManager(const std::string&); 
}; 

class Element 
{ 
... 
    private: 
     void AddToManager(const std::string&); 
     Manager* mGuiManager; 
... 
} 

void Element::AddToManager(const std::string& rName) 
{ 
    mGuiManager->AddElement(rName, this); // Error on this line 
} 

} 

我得到的错误:

undefined reference to `GUI::Manager::AddElement(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, GUI::Element*)' 

我应该从哪里开始解决这个问题?

+0

您是否在** GUI **命名空间中定义了AddElement –

+0

我所做的一切都在GUI命名空间中。我把这个问题放在了帖子的后面,有一个与它有关的怪癖。 – Nate

+0

小心添加'AddElement'的定义? –

回答

-1

您需要将以下声明添加到您的Element类:

friend class Manager; 
0

我被STL中的位错误分心,忘了我有注释掉的实际功能。