我有一个抽象基类,它用于派生一些类。这些类的某些属性在所有类之间共享,并且这些属性应该是不可修改的。
为了在所有 10 个类之间共享一个变量,我将其设为静态。
class ABC{
public:
static int *anArray;
int index;
static int tot_index;
virtual void print()=0;
ABC(){index=tot_index++;};
virtual ~ABC(){};
};
这很好用, tot_index 将包含实例化的类的数量,并且索引是每个类的唯一标识符。
我遇到的问题是 *anArray 和派生类的数量是在运行时设置的,并且在实例化类之后我不想修改这些值。
我有点困惑:
1) 我应该在哪里设置 *anArray 值?只是在派生类的一些随机中?
2) 如果一个变量应该是不可修改的,那么我应该将它设置为 const。但是如果我不知道编译时的值是什么,我该如何将它设置为 const?