Я хочу создать объект в стеке, с помощью C++. Вы знаете то, что является различием между ними к способам вызвать конструктора (с и без круглой скобки):
a) MyClass object ;
b) MyClass object() ;
Я использую MFC и при построении глобальной переменной для главного приложения, если я использую последний путь, я получаю исключение, я думал, что эти два пути были эквивалентны.
Спасибо парни для любой информации.
Это одна из проблем C++.
MyClass object();
Это способ определения прототипа функции в C++, поэтому компилятор думает, что вы пытаетесь объявить другую функцию в середине другой функции.
Если вы хотите вызвать конструктор по умолчанию (т.е. тот, который не принимает аргументов), используйте следующий синтаксис:
MyClass object;
См. также ответ Гарта Гилмура на удаленный вопрос Какая ваша (наименее) любимая синтаксическая ошибка?:
В C++
Employee e1("Dave", "IT"); //OK Сотрудник e2("Джейн"); //OK Сотрудник e3(); //ERROR - прототип функции
Например:
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;
}