我要说的是:
<>strong>a.hpp:
class B;
class A
{
private:
std::unique_ptr<B> b_;
}
<>strong>a.cpp:
#include <something_complicated.hpp>
struct B
{
something_complicated x;
}
something_complicated& A::get_complicated() { return b_->x; }
不幸的是,在这种情况下,由于“植被——复制”不是A的一种方法,因此将进行汇编。
因此,我们可以尝试:
<>strong>a.hpp:
class B;
class A
{
private:
std::unique_ptr<B> b_;
something_complicated& A::get_complicated();
}
但是,由于对一些“复制品”的定义,因此“hpp”未能汇编。
我们可以宣布一些东西——如果是一类,但可能是一种类型,这样就可以了。
The only way I can think of doing this without making b_ public nor including something_complicated.hpp in a.hpp is the following:
<>strong>a.cpp:
#include <something_complicated.hpp>
struct B
{
something_complicated x;
}
#define get_complicated ((b_->x))
Surely I don t have to define a macro to get around this issue? Any alternatives?