Есть такой класс:
class A
{
public:
int q;
A(int q_) { q = q_; }
void print() { printf("%d\n", q); }
};
Хочеться сделать так:
class B
{
A a(3);
};
Мне так удобней, чтобы инициализация была рядом с определением.
Но так делать нельзя. Ошибка:
main.cpp(29) : error C2059: syntax error : 'constant'
Написал велосипед:
template<int Z>
class A_ : public A
{
public:
A_() : A(Z) { }
};
Теперь можно писать:
class B
{
A_<3> a;
};
Но что мне не нравиться. Это то что класс A часто инстанциируется с разными параметрами в более чем в 1000 мест.
Я написал тестовую программу и выяснил, что на размер exe это не влияет. Компилятор оптимизирует велосипед.
Но это влиеят на размер obj и на время компиляции. Которое возрастает процентов на 10%. Прога итак долго компилиться.
Поэтому это для меня фатально.
Может кто-нибудь посоветует велосипед получше?