Различные способы создать объект в C++

Я хочу создать объект в стеке, с помощью C++. Вы знаете то, что является различием между ними к способам вызвать конструктора (с и без круглой скобки):

a) MyClass object ;

b) MyClass object() ;

Я использую MFC и при построении глобальной переменной для главного приложения, если я использую последний путь, я получаю исключение, я думал, что эти два пути были эквивалентны.

Спасибо парни для любой информации.

13
задан lurks 22 February 2010 в 03:37
поделиться

2 ответа

Это одна из проблем C++.

MyClass object();

Это способ определения прототипа функции в C++, поэтому компилятор думает, что вы пытаетесь объявить другую функцию в середине другой функции.

Если вы хотите вызвать конструктор по умолчанию (т.е. тот, который не принимает аргументов), используйте следующий синтаксис:

MyClass object;

См. также ответ Гарта Гилмура на удаленный вопрос Какая ваша (наименее) любимая синтаксическая ошибка?:

В C++

Employee e1("Dave", "IT"); //OK
Сотрудник e2("Джейн"); //OK
Сотрудник e3(); //ERROR - прототип функции
24
ответ дан 1 December 2019 в 19:49
поделиться

Например:

class MyClass
{
   public:
   MyClass()
   {x = 0;}
   MyClass(int X)
   {x = X;}
   private:
   int x;
};

int main()
{
   MyClass myObject(56); // initialize x to value '56'
   MyClass myObject2; //calls default constructor and initializes x to 0
   return 0;
}
9
ответ дан 1 December 2019 в 19:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: