我有一个类似于此的类(详细信息已删除):
class MyClass{
int seq[8];
...
public:
...
static struct{
bool sorted();
bool reverse_sorted();
...
}test;
};
我想要做的是将我的一些MyClass
成员函数分成很好的小组(结构)。问题是“test”结构中的函数需要访问MyClass
的成员。
当我使用上面的代码时,我可以定义bool sorted(){..}
,但它不会像我希望的那样使它成为MyClass
命名空间的一部分。
我的意图是能够写出这样的东西:
MyClass M;
*do stuff with M*
if( M.test.sorted()){
*do something*
}
else if( M.test.reverse_sorted()){
*do something else*
}
有什么方法可以做到这一点吗? (如何)我可以允许内部结构访问类的数据成员? &安培;&安培;我仍然可以使用“MyObject.test.function()
”语法访问这些函数吗?
答案 0 :(得分:0)
您可以将您的结构声明为您班级的friend
,以达到您想要的效果,但您必须提供您班级的参考。说实话,我会考虑那种糟糕的风格,但这很有效:
class M
{
public:
struct x
{ bool sorted(M & m) const { return m.sorted; } } test;
private:
bool sorted;
friend class x;
};
答案 1 :(得分:0)
我建议使用简单的东西:
class MyClass
{
int seq[8];
...
public:
...
bool group1_sorted();
bool group1_reverse_sorted();
int group2_something_else();
};
前缀会给你足够的亮点,而所有问题都会神奇地消失......为什么你需要这些结构?