здравствуйте. подскажите, как вызвать конструктор без опреатора new
class A
{
private:
Session s;
SubscriptionManager subscriptions;
public:
A();
....
}
надо инициализировать subscriptions
на такой вариант компилятор ругается (именно на new, как ругается щас не напишу)
subscriptions = new SubscriptionManager(s);
конструктор с параметром Session в классе SubscriptionManager есть
в примерах есть такой вариант инициализации, но он не подходит
A::A(Session& s, uint l, bool summary_) :
session(s), subscriptions(s), counter(0), limit(l),
queue(session.getId().getName()), total(),
min(std::numeric_limits<double>::max()), max(), summary(summary_)
{}
Здравствуйте, Аноним, Вы писали:
А>здравствуйте. подскажите, как вызвать конструктор без опреатора new
А>А>class A
А>{
А>private:
А>Session s;
А>SubscriptionManager subscriptions;
А>public:
А>A();
А>....
А>}
А>
А>надо инициализировать subscriptions
А>на такой вариант компилятор ругается (именно на new, как ругается щас не напишу)
А>subscriptions = new SubscriptionManager(s);
А>конструктор с параметром Session в классе SubscriptionManager есть
А>в примерах есть такой вариант инициализации, но он не подходит
А>A::A(Session& s, uint l, bool summary_) :
А> session(s), subscriptions(s), counter(0), limit(l),
А> queue(session.getId().getName()), total(),
А> min(std::numeric_limits<double>::max()), max(), summary(summary_)
А>{}
class A
{
public:
A()
: i(1)
{ }
private:
int i;
};
...
void* operator new(size_t sz, void* place)
{
return place;
}
...
A a;
new(&a) A();
Здравствуйте, Аноним, Вы писали:
А>надо инициализировать subscriptions
А>на такой вариант компилятор ругается (именно на new, как ругается щас не напишу)
Видимо да, чувак не разобрался с инициализацией мемберов класса. Мемберы не инициализируются new, их конструкторы вызываются явно в списках инициализации. Нужно написать новый вид конструктора, который бы тебе подошёл, например
A::A(Session& s) :
session(s), subscriptions(s), counter(0), limit(100), // это список инициализации мемберов пошёл
queue(session.getId().getName()), total(),
min(std::numeric_limits<double>::max()), max(), summary(0)
{}