我需要具有相同名称的静态变量对属于同一类的特定函数可见。
我需要的是......
#include <XYZ.h>
{
int A, B;
void XYZ::f1(){}
int XYZ::f2(){return 0;}
}
{
int A, B;
void XYZ::f3(){}
float XYZ::f4(){return 0.0;}
}
{
int A,B;
void XYZ::f5(){}
void XYZ::f6(){}
}
变量A和B应该在它自己的范围内,而不是其他任何地方。我怎么能这样做?
答案 0 :(得分:2)
也许最好只为变量设置不同的名称。将它们“隐藏”在同一类的其他功能中没有多大优势。
class XYZ {
static int A1, B1, A2, B2; // come up with more descriptive names
}
另一个好方法是将XYZ
类拆分成几个较小的类。似乎它可能有不止一个责任,这是糟糕的设计。
如果你真的想要这个,这是怎么回事,但我觉得它太复杂了:
class Scope1 { // one for each scope, come up with more descriptive names
static int A, B;
static void f1();
static int f2();
// use friend declarations to allow access only from specified functions
// but if you don't care about that, make the functions public instead
friend void XYZ::f1();
friend int XYZ::f2();
// you don't want instances of this class
public:
Scope1() = delete;
}
// delegate
void XYZ::f1(){
Scope1::f1();
}
int XYZ::f2(){
return Scope1::f2();
}
// implementation
void Scope1::f1(){}
// ...