【发布时间】:2011-04-09 00:51:03
【问题描述】:
我不太熟悉 c++ 以及实例化对象的工作原理,所以这可能是一个很容易解决的问题。当我使用 g++ 编译时,我收到错误“未定义对 'Foo::Foo(std::string)' 的引用”。我想创建一个类 Foo 的实例,它的构造函数中有一个字符串参数。代码如下:
Foo.h
#include <string>
using namespace std;
class Foo
{
public:
Foo(string s);
private:
string id;
};
Foo.cpp
#include <string>
#include "Foo.h"
using namespace std;
Foo::Foo(string s)
{
id = s;
}
main.cpp
#include <string>
#include "Foo.h"
using namespace std;
int main()
{
Foo foo("bar");
return 0;
}
【问题讨论】:
-
请不要在头文件中使用 using。此外,std::string 应该作为 foo(std::string const &s) 传递。
-
对不起,为什么不在头文件中使用'using'?
-
因为在头文件中使用会在包含头文件的每个编译单元中使用“using”-types 污染全局命名空间