的一个重要功能MyClass
是快速调用其成员之一的方法;我试图鼓励这个电话的内联。该成员的类型为Foo
。我希望通过将其实现和接口放在匿名命名空间中来隐藏。 Foo
以下是当前设置相关源文件和头文件的方式...
在test.h中,我有:
struct Foo;
class MyClass {
public:
void doStuff();
private:
Foo f;
inline unsigned long long int code() { return f.getCode(); }
};
在test.cpp中,我有:
namespace
{
struct Foo {
public:
unsigned long long int getCode() {
// ...
}
};
} // end anon namespace
void MyClass::doStuff() {
// do stuff, such as calling code()
}
当然,问题在于,在 的内联定义的上下文中MyClass::code()
,f
不是一个完整的类型。
有什么办法可以隐藏Foo
,同时也可以内联MyClass::code()
?