我正在读
pimpl code from github
,并尝试在我的macOS笔记本电脑中编译,如下所示:
文件:foo。cpp公司
#include "foo.h"
#include <memory>
class foo::impl
{
public:
void do_internal_work()
{
internal_data = 5;
}
private:
int internal_data = 0;
};
foo::foo()
: pimpl{std::make_unique<impl>()}
{
pimpl->do_internal_work();
}
foo::~foo() = default;
foo::foo(foo&&) = default;
foo& foo::operator=(foo&&) = default;
文件:foo。h类
#include <memory>
class foo
{
public:
foo();
~foo();
foo(foo&&);
foo& operator=(foo&&);
private:
class impl;
std::unique_ptr<impl> pimpl;
};
档案员。cpp公司
#include "foo.h"
#include <iostream>
int main() {
foo x;
}
我尝试使用
clang++ -std=c++14 main.cc -o main
,但有一个错误:
未定义的符号
对于体系结构x86\u 64:“foo::foo()”,引用自:
_main-b39a70中的main。o“foo::~ foo()”,引用自:
_main-b39a70中的main。o ld:找不到架构x86\u 64的符号clang:错误:链接器命令失败,退出代码为1(使用-v to
请参见调用)