Одной из причин является то, что в вашем классе Display
нет конструктора по умолчанию, учитывая, что вы создаете объект, подобный Display aa;
.Конструктор по умолчанию - это конструктор без аргументов.Конструкторы по умолчанию неявно предоставляются компилятором как синтезированный конструктор по умолчанию, только если вы не предоставляете никаких конструкторов вашему классу.Если вы предоставляете свои собственные конструкторы вашему классу, вы также должны явно предоставить конструктор по умолчанию.Таким образом, в вашем случае вы должны создать объект Display, подобный этому Display aa(argument, argument);
, указав аргументы.Однако, если вы хотите создать объект типа Display aa;
, добавьте Display () { }
или Display() = default;
в ваш файл Display.h
.
Учитывая, что вы создали объект, как я описал, но все равно получаете ошибку,Другая причина может заключаться в том, что вы не компилируете исходный файл, содержащий определение конструктора Display (int,int);
(а не просто объявление, как вы делали это в заголовочном файле) вместе с исходным файлом, который содержит функцию main
.Если вы сделали это, но все еще получаете ошибку при компиляции, то я бы предположил, что это проблема компилятора, и попытался бы добавить предварительное объявление class Display;
, которое должно компилировать код.Но определение Display
должно быть в пределах видимого диапазона функции main
, иначе прямое объявление ничего не даст.
В любом случае, вы должны убедиться, что определение вашего класса находится в пределахвидимый диапазон функции main
, которая создает объект класса.Тип класса с единственным объявлением без определения называется неполным типом, и вы не можете создать объект неполного типа.Поэтому объявление вашего Display (int,int);
конструктора в Display.h
недостаточно.Вам также необходимо определить это в видимом диапазоне функции main
.Вы можете сделать это либо в том же файле, что и основной, в том же файле, что и заголовок, либо в отдельном исходном файле (что рекомендуется), который содержит полное определение класса Display, его элементов данных и функций-членов.Однако вы должны обязательно скомпилировать этот исходный файл вместе с исходным файлом, содержащим main.