对于容器类,我想提供一个包含多个功能的接口,这些功能分为几类,例如:
Data::Get::FirstGetter()
Data::Get::SecondGetter()
Data::Set::FirstSetter()
Data::Set::FirstSetter()
这将允许这样的事情:
Data myData;
myData::Set::FirstSetter( stuff );
std::cout << myData::Get::FirstGetter() << std::endl; // -> "stuff"
显然代码本身是伪造的,我使用范围运算符::
作为其他东西的潜在占位符(我知道你不能在类中创建命名空间)。
以下代码段演示了实现此类目标的方法:
#include <iostream>
struct Foo {
private:
struct aBar {
void IFunc(){
std::cout << "IFunc()" << std::endl;
}
};
public:
void OFunc(){
std::cout << "OFunc()" << std::endl;
}
aBar Bar;
};
int main(){
Foo foo;
foo.OFunc();
foo.Bar.IFunc();
}
但是,为了使用它,必须为每个分组对象创建一个实例(在伪代码示例中是 的一个实例,Get
另一个是 的实例Set
,在虚拟示例中是 的一个实例aBar
)。有没有办法以不同的方式实现此功能(可能使用实际的范围运算符::
来指示要调用的成员位于内部范围内)?