【发布时间】:2019-01-19 11:28:56
【问题描述】:
foo.h
#include"fooImpl.h"
class foo
{
private:
class fooImpl;
std::unique_ptr <fooImpl> foo_imple;
public:
void bar();
};
fooImpl.h
#include "foo.h"
class foo::fooImpl
{
public:
void api();
};
foo.cpp
#include "foo.h"
void foo::bar()
{
foo_imple->api();
}
fooImpl.cpp
#include"foo.h"
#include"fooImpl.h"
void foo::fooImpl::api()
{
cout << "bar";
}
收到以下错误:
错误:无效使用不完整类型 'class foo::fooImpl'
foo_imple->bar();注意:'class foo::fooImpl'的前向声明
类 fooImpl;
无法找出这个 pimpl 实现有什么问题。错误似乎是由于缺少某些声明。
【问题讨论】:
标签: c++ design-patterns pimpl-idiom