Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Ced от Май 20, 2017, 15:52



Название: Немного про #include
Отправлено: Ced от Май 20, 2017, 15:52
Столкнулся с проблемой. После очередной доработки программы она отказалась собираться, объявив, что не видит ряда конструкторов и перегруженных операторов. \проблема решилась путем внесения в текст CPP файла строки
Код:
#inclelt  myfile.cpp

Означенный файл содержит тела перечисленных конструкторов и перегруженных операторов. Соответствующий хедер был включен ранее.
template и virtual не использую в тексте вообще. После какого именно изменения началась проблема, упустил. Так случилось.

Подскажите пожалуйста, в каких случаях код конструкторов и перегруженных операторов требуется непосредственно в файле, где они используются?


Название: Re: Немного про #include
Отправлено: ViTech от Май 20, 2017, 16:17
После очередной доработки программы она отказалась собираться, объявив, что не видит ряда конструкторов и перегруженных операторов.

Какие ошибки выводятся? И как выглядят сигнатуры конструкторов/перегруженных операторов тоже хорошо бы увидеть.


Название: Re: Немного про #include
Отправлено: Ced от Май 20, 2017, 18:25
После очередной доработки программы она отказалась собираться, объявив, что не видит ряда конструкторов и перегруженных операторов.

Какие ошибки выводятся? И как выглядят сигнатуры конструкторов/перегруженных операторов тоже хорошо бы увидеть.

Ошибки выводятся "Отсутствует конструктор ......." который требуется для создания текущего объекта.
Конструкторы любые.
Например:
Код:
Method::Method ()
{

}

Method::Method (const Method &toCopy)
{
               number = toCopy.number;
           methodName = toCopy.methodName;
         bufferLength = toCopy.bufferLength;

        intSetting.append(toCopy.intSetting);
      inputDataNum.append(toCopy.inputDataNum);
     outputDataNum.append(toCopy.outputDataNum);
     inputDataName.append(toCopy.inputDataName);
     doubleSetting.append(toCopy.doubleSetting);
}

Весь текст тут не привожу исключительно по соображениям размера.
Полный хедер 300 строк.
Полный СРР - больше тысячи.
А что именно из него вытащить, просто не знаю.


Название: Re: Немного про #include
Отправлено: Ced от Май 20, 2017, 18:31
Какие ошибки выводятся? И как выглядят сигнатуры конструкторов/перегруженных операторов тоже хорошо бы увидеть.

Вот пример ошибки:
Цитировать
D:\Programs\main\GetData\protocol.cpp:1004: ошибка: undefined reference to `Handler::Handler()'

А вот строка кода, которая ее устраняет:
Цитировать
#include "..\nuclies\handlers.cpp"
Хедер файла handlers включен.
В других сборках эта же пара файлов работает без таких изысков.


Название: Re: Немного про #include
Отправлено: Ced от Май 20, 2017, 18:35
Да, вот еще наверно что. Старая версия содержала виртуальные деструкторы и методы.
Сейчас они закоментарены.
Пробовал полную пересборку. Толку никакого.


Название: Re: Немного про #include
Отправлено: Ced от Май 20, 2017, 18:49
\нашел причину. Как известно, самые загадочные ошибки имеют самые дурацкие причины:) Я случайно исключил handlers из проекта:)