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

How to reference other members in class from within an internal struct

本文关键字:其他 成员 引用 内部 结构      更新时间:2023-10-16

我有一个类看起来像这样(删除了详细信息):

class MyClass{
        int seq[8];
        ...
    public:
        ...
        static struct{
            bool sorted();
            bool reverse_sorted();
            ...
        }test;
};

我想做的是将我的一些MyClass成员函数分离成漂亮的小组(structs)。问题是"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()"语法访问函数吗?

我建议使用简单的东西:

class MyClass
{
        int seq[8];
        ...
    public:
        ...
        bool group1_sorted();
        bool group1_reverse_sorted();
        int  group2_something_else();
};

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

您可以将结构声明为类的friend以实现您想要的内容,但必须提供类的引用。老实说,我会认为这种糟糕的风格,但这很有效:

class M
{
    public:
        struct x
        { bool sorted(M & m) const { return m.sorted; } } test;
    private:
        bool sorted;
        friend class x;
};