【发布时间】:2016-10-17 20:16:23
【问题描述】:
在 C++ 中,我正在使用一个宏,我需要在其中定义两个变量,其中第一个变量应该具有与其定义的范围相同的公共/私有/受保护状态,而另一个应该是私有的。但是,如果我这样做:
#define my_macro(a, b) int a;\
private: int b;
那么我已经永久更改了范围!这是不好的。所以我想知道:有没有办法说:“只有 this 变量/成员/方法/类是私有的”?
我天真地尝试做类似的事情
class my_class
{
public:
int i;
private int j;
};
但没有运气。有什么办法可以得到我需要的吗?
编辑:我不确定宏定义的范围是公共的。正如我所说,“[...] 其中第一个应该具有与定义它的范围相同的公共/私有/受保护状态”,因此要么是公共的,要么是私有的,要么是受保护的,具体取决于范围。
【问题讨论】:
-
您可以用同样的方式将私有后的任何内容再次声明为公开。
-
您可以将 a 的范围作为宏的参数并在最后恢复它
-
如果你不介意我问,这样的宏有什么意义?它似乎实现了蝙蝠的权利,使其他开发人员更难阅读您的类的代码而几乎没有明显的好处。