如何从内部结构中引用类中的其他成员
How to reference other members in class from within an internal struct
我有一个类看起来像这样(删除了详细信息):
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;
};
相关文章:
- 只对向量中的一个类成员进行排序,其他成员保持不变
- 使用其他成员初始化结构的成员?
- 对 Eclipse 项目库的更改将还原给团队的其他成员
- 其他成员函数的通用"成员函数"包装器?
- 如果类包含基类类型的成员作为第一个元素,后跟其他成员,编译器是否可以优化空基?
- 将成员函数作为参数传递给其他成员函数 (C++ 11 <function>)
- 使用类的其他成员变量定义类的成员变量数组
- 不太明白 & 运算符的地址在这个结构中做什么,以及它如何能够访问其他成员变量
- 当并行线程访问同一数据结构的其他成员时,正确的方法可以在Visual Studio上的OpenMP上并行循环
- 当 lambda 函数必须访问其他成员时,如何将该函数分配给结构成员
- 如何在类的其他成员函数中重用传递的引用?
- 如果其他成员跟在结构成员的末尾,则写入/读取该末尾
- 在同一类的其他成员函数的定义中调用类成员函数
- std::函数成员是否可以访问其他成员
- 安全地移动在访问其他成员的成员线程中运行 lambda 的对象
- 通过组合的其他成员访问'has-a'关系中的成员
- 以下4种样式调用其他成员方法有什么区别?
- 成员变量是否可用于初始化列表中的其他成员
- 将非成员变量数据传递给构造函数时,如何保存它们并在其他成员函数中使用?C++
- 如何从内部结构中引用类中的其他成员