如何將靜態成員的範圍限制爲n個特定類?例如,如果我創建類A的a1對象和類A的a2對象,我希望這些對象(用A創建的a1,a2)對於它們的靜態成員可以具有不同的值,但對於它們的相應派生類也是如此。將靜態成員的範圍限制爲n個特定類
class A{
public:
A(int member){
A::mMember=member;}
void set(int member){
A::mMember=member;}
int get(){
return A::mMember;}
protected:
static int mMember;
};
int A::mMember;
class B:public A{
public:
B(int member):A(member){};
};
class C:public A{
C(int member):A(member){};
};
int main()
{
A * a1= new A(1);
std::cout<<"a1: "<< a1->get()<<std::endl;
B * b1= new B(2);
std::cout<<"a1: "<< a1->get()<<std::endl;
// How to make a1 continue be a1=2 and a2 = 5. I mean how to limit a static member
//to only its derivated class
A * a2 = new A(5);
std::cout<<"a1: "<< a1->get()<<std::endl;
std::cout<<"a2: "<< a2->get()<<std::endl;
}
請寫一個正確的問題。不要把整個問題放在一大堆代碼中的單個評論中。 – 2013-04-09 15:57:39
爲什麼你不使用非靜態成員變量? – 2013-04-09 16:08:42
我在基類中有一個映射成員,當構造派生類時,派生類將相同的ID分配給映射,因爲它繼承該成員。 – user1310873 2013-04-09 16:13:13