如何在内部结构中引用类中的其他成员

时间:2013-07-12 08:01:34

标签: c++ nested-class

我有一个类似于此的类(详细信息已删除):

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()”语法访问这些函数吗?

2 个答案:

答案 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();
};

前缀会给你足够的亮点,而所有问题都会神奇地消失......为什么你需要这些结构?