У меня есть класс А с основными членами и функциями:что-то вроде виртуального члена (структура)
class A{
public:
typedef struct{
int aa;
int bb;
} stEntry;
stEntry entry;
void function1();
void function2();
};
чем класс B, который должен расширить класс А, включая структуры stEntry ...
class B : public A{
public:
typedef struct :stEntry
{
int cc;
} stEntry;
stEntry entry;
void function3();
};
, а затем :
int main() {
A a;
B b;
a.entry.aa = 1;
b.entry.aa = 2;
b.entry.cc = 3;
cout << "class A:"<<sizeof(a)<< endl;
cout << "class B:"<<sizeof(b)<< endl;
return 0;
}
Я получаю
class A:8
class B:20
Таким образом, класс B содержит 2 экземпляра - 8 байтов (член класса) + 12 байтов (член класса B).
Есть ли способ расширения структуры stEntry для класса B? (без 2 экземпляров)
Thats great idea! Тем не менее, я думаю, что строки «typedef stEntryBase stEntry»; и "typedef stEntryDerived stEntry;" являются избыточными. – Meloun
@Meloun: конечно, я оставил их на всякий случай, если есть код вызова, который использует тип 'B :: stEntry' для чего-либо. –