2016-01-17 9 views
1

Я пытаюсь использовать конструктор для класса «Control», который не принимает никаких параметров, но когда я пытаюсь создать экземпляр, я получаю сообщение об ошибке «Нет подходящего конструктора по умолчанию»Нет подходящего конструктора по умолчанию

Вот мой заголовок:

class Control 
{ 
public: 
    Control(); 

private: 
    Layout activeLayout; 

    void createLayout(); 
    void moveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight,   std::string windowTitle); 
    void mainLoop(); 
}; 

#endif 

Мой файл CPP:

Control::Control() 
{ 
    Detector mainDetector(); 

    createLayout(); 
    mainLoop(); 
} 

и где я пытаюсь позвонить инструктору:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    Control mainControl(); 

    system("PAUSE"); 

    return 0; 
}; 

ответ

3

Обратите внимание, что

Detector mainDetector(); 

является объявлением функции, а не Definitio n переменной типа Control. Когда нет никаких параметров синтаксис

Detector mainDetector; 

Есть случаи, в которых объявление локальной функции выведенные даже тогда, когда это не казалось бы, возможно ... это известно как «the most vexing parse» правила C++ ,

Простой пример:

double pi = 3.141592654; 
int int_pi(int(pi)); 

достаточно удивительно здесь int_pi объявляется функция!

+0

Пожалуйста, скажите мне, что 6502A или 6502B, и это было Acorn или BBC machne. –

+0

@ EdHeal: извините ... Apple] [:-) – 6502

+0

Я не знал, что они использовали один и тот же 8-битный процессор. Узнавайте что-нибудь о прошлом каждый день –

1

Изменить

Control mainControl(); 

в

Control mainControl; 

Это должно решить проблему

Смежные вопросы