Russian Qt Forum
Ноябрь 24, 2024, 03:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Немного про #include  (Прочитано 2499 раз)
Ced
Гость
« : Май 20, 2017, 15:52 »

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

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

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

Сообщений: 858



Просмотр профиля
« Ответ #1 : Май 20, 2017, 16:17 »

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

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

Пока сам не сделаешь...
Ced
Гость
« Ответ #2 : Май 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 строк.
Полный СРР - больше тысячи.
А что именно из него вытащить, просто не знаю.
Записан
Ced
Гость
« Ответ #3 : Май 20, 2017, 18:31 »

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

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

А вот строка кода, которая ее устраняет:
Цитировать
#include "..\nuclies\handlers.cpp"
Хедер файла handlers включен.
В других сборках эта же пара файлов работает без таких изысков.
Записан
Ced
Гость
« Ответ #4 : Май 20, 2017, 18:35 »

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

\нашел причину. Как известно, самые загадочные ошибки имеют самые дурацкие причины:) Я случайно исключил handlers из проекта:)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.