XCODE:使用字符串流<sstream> </sstream>时的链接问题

时间:2013-04-13 19:07:09

标签: c++ xcode stringstream

我不明白为什么XCode在使用

时遇到链接问题
    string create_base_uri(string host, int port, string dbname){
      std::ostringstream ostr; //output string stream
      ostr << port; //use the string stream just like cout,
      string port_string = ostr.str();
      return "http://" + host + ":" + port_string + "/" + dbname;
}
  

架构x86_64的未定义符号:     “CouchServer :: create_base_uri(std :: __ 1 :: basic_string,std :: __ 1 :: allocator&gt;,int,std :: __ 1 :: basic_string,std :: __ 1 :: allocator&gt;)”,引自:         couch_server.o中的CouchServer :: get_document_by_id(std :: __ 1 :: basic_string,std :: __ 1 :: allocator&gt;)   ld:找不到架构x86_64的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您需要定义相对于类的成员函数:

string CouchServer::create_base_uri(string host, int port, string dbname) {
    //..
}

相反,你要定义一个自由函数:

string create_base_uri(string host, int port, string dbname) {
    //..
}

有趣的是,它编译,因为它没有引用该类的任何其他成员。实际上让它成为一个自由功能可能更好!如果它当前是私有成员,则可以将其放在匿名命名空间中。如果它在其他地方很有用,你可以把它变成一个实用功能。