У меня странная проблема с инициацией объекта класса.
Проблема так же странна, а не легко воспроизводима. Однако я постараюсь привести показательный пример.
У меня есть классы наследования.
class BarClass {
public:
BarClass() {
...
}
BarClass(int i, int j) {
...
}
void doSomething() { ... }
};
class FooClass : public BarClass {
public:
FooClass() {
}
FooClass(int i, int j) : BarClass(i,j) {
...
}
};
Иногда, если я инициирую объекты следующим образом, я получаю ошибку ошибки сегментации при инициализации.
FooClass foo1;
foo1.doSomething();
FooClass foo2(10, 20);
foo2.doSomething();
Если я использую явный указатель new, то все в порядке ..
FooClass *foo1= new FooClass();
foo1->doSomething();
FooClass foo2(10, 20);
foo2.doSomething();
Следующий код выдаст мне ошибку компилятора в строке 2.
FooClass foo1();
foo1.doSomething();
FooClass foo2(10, 20);
foo2.doSomething();
как мне правильно инициировать объект, особенно если у него есть конструктор по умолчанию и конструкторы с аргументами.