Название: Проблемы с функтором. Отправлено: fisenkdima от Февраль 21, 2013, 06:55 Недавно узнал, что в С++ существует такая клёвая штука, как функторы.
Решил потестить, да не очень вышло( Код, если я все правильно понял, компилируется, но не линкуется. Выдаёт следующую ошибку: main.obj:-1: error: LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall GeneratorOfBits::operator()(int)" (??RGeneratorOfBits@@QAEHH@Z) в функции _main Ругается, как вы могли заметить, на класс GeneratorOfBits. Теста ради создал ещё один, практически идентичный функтор, который, по идее, также должен был стать причиной подобной ошибки, но нет! С ним одним проект собирается без каких-либо проблем. Люди добрые, помогите понять, в каком месте я ошибаюсь. Если кому-то так будет удобнее, то вот сохранённый проект: https://dl.dropbox.com/u/102021951/untitled1.zip А вот его код: main.cpp: Код: #include <QCoreApplication> functor1.h (этот класс работает корректно): Код: #ifndef FUNCTOR1_H Код: #include "functor1.h" generatorofbits.h (а вот с этим функтором проблемы): Код: #ifndef GENERATOROFBITS_H Код: #include "generatorofbits.h" Название: Re: Проблемы с функтором. Отправлено: Fat-Zer от Февраль 21, 2013, 07:15 linux/gcc-4.6.3: всё работает...
да и так всё вроде правильно... почисти проект, попробуй сменить компилятор... может где-то прописаны кривые параметры компилятора/линкера... Название: Re: Проблемы с функтором. Отправлено: fisenkdima от Февраль 21, 2013, 07:39 Вот я тоже уже начал на это грешить. Спасибо, вы подтвердили мои подозрения, ибо подобная ошибка вылазит не в первый раз, и не только на функторы.
Название: Re: Проблемы с функтором. Отправлено: alexis031182 от Февраль 21, 2013, 09:49 Поправьте меня, если ошибаюсь, но это похоже не функтор, а просто переопределение оператора вызова.
Название: Re: Проблемы с функтором. Отправлено: fisenkdima от Февраль 25, 2013, 07:43 Цитировать Поправьте меня, если ошибаюсь, но это похоже не функтор, а просто переопределение оператора вызова. Википедия сообщила мне, что функтор это класс с перегруженным оператором круглых скобок (ну и, на сколько я понял, без иных интерфейсов кроме конструктора и этих самых круглых скобок). |