Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

overload static data member

26.12.06 18:37
Re: overload static data member
 
desyman свой человек
desyman
в ответ desyman 22.12.06 14:15, Последний раз изменено 26.12.06 18:48 (desyman)

В ответ на:

#include <iostream>
using namespace std;
class A
{
protected:
// static double a;
double a;
public:
void set(const double i){this->a=i;}
double* get(){return &(this->a);}
};
class B:public A
{
protected:
static double a;
public:
};
class C:public A
{
protected:
static double a;
public:
};
//double A::a= (double) 1;
double B::a= (double) 2;
double C::a= (double) 3;
B b_arr[5];
C c_arr[5];
int main ()
{
for(int k=0;k<5;++k)
{
b_arr[k].set((double) 4);
// c_arr[k].set((double) 5);
printf("%d C::a = %p %2.0f B::a = %p %2.0f \n",
i,
(c_arr[k].get()), *(c_arr[k].get()),
(b_arr[k].get()), *(b_arr[k].get())
);
}
return 1;
}
0 C::a = 0x8049ac0 0 B::a = 0x8049a80 4
1 C::a = 0x8049ac8 0 B::a = 0x8049a88 4
2 C::a = 0x8049ad0 0 B::a = 0x8049a90 4
3 C::a = 0x8049ad8 0 B::a = 0x8049a98 4
4 C::a = 0x8049ae0 0 B::a = 0x8049aa0 4


a nado tak:
0 C::a = 0x8049ac0 3 B::a = 0x8049a80 4
1 C::a = 0x8049ac0 3 B::a = 0x8049a80 4
2 C::a = 0x8049ac0 3 B::a = 0x8049a80 4
3 C::a = 0x8049ac0 3 B::a = 0x8049a80 4
4 C::a = 0x8049ac0 3 B::a = 0x8049a80 4

 

Перейти на