Mi stavo chiedendo quale sia il limite di dimensione per una classe. Ho fatto un semplice test:Qual è il limite di dimensioni per una classe?
#define CLS(name,other) \
class name\
{\
public: \
name() {};\
other a;\
other b;\
other c;\
other d;\
other e;\
other f;\
other g;\
other h;\
other i;\
other j;\
other k;\
};
class A{
int k;
public:
A(){};
};
CLS(B,A);
CLS(C,B);
CLS(D,C);
CLS(E,D);
CLS(F,E);
CLS(G,F);
CLS(H,G);
CLS(I,H);
CLS(J,I);
Non riesce a compilare con
" 'J': classe è troppo grande"
Se rimuovo la dichiarazione finale - CLS(J,I);
, è tutto va bene.
È una restrizione imposta dal compilatore o si trova da qualche parte nello standard?
Con l'ultima definizione si raggiunge circa 10 GB (a seconda del padding) per la classe J. – dalle
Lo stavo solo dichiarando, non effettivamente usandolo.Scommetto che dichiarare un array di alcune classi H potrebbe interrompere il runtime :) –