Название: Проблема с Qwt - Не хочет на вход подаваться функция экземпляра класса Отправлено: stukselbax от Февраль 10, 2011, 20:19 Доброго времени суток!
Дан класс (точнее взят из примеров Qwt) Код: class FunctionData: public QwtSyntheticPointData Код: #include <qwt_plot.h> Приватные функции - соответствующие функции которые по заданным параметрам и по значению x выдают значение y. В кострукторе tdcsplot(...) создаю кривые, и пытаюсь им присвоить данные следующим образом : Код: if (_fba) tdcsplot.cpp: In constructor ‘tdcsplot::tdcsplot(double, double, double, double, int, bool, bool, bool, bool)’: tdcsplot.cpp:45:50: ошибка: нет подходящей функции для вызова ‘FunctionData::FunctionData(<unresolved overloaded function type>)’ functiondata.h:8:5: замечание: претенденты: FunctionData::FunctionData(double (*)(double)) functiondata.h:6:1: замечание: FunctionData::FunctionData(const FunctionData&) Если в файле *.cpp определить обычную функцию с той же семантикой, и передать её в качестве параметра - всё пучком. Но проблема тогда в другом - в этой функции нельзя обратиться к полям класса tdcsplot. Подскажите, почему класс FunctionData не хочет на вход принимать функцию, которая является методом класса? Название: Re: Проблема с Qwt - Не хочет на вход подаваться функция экземпляра класса Отправлено: stukselbax от Февраль 10, 2011, 22:22 Решил проблему следующим способом.
В исходной задаче дано 4 разных метода. каждому из них на вход подаются одни и теже параметры. но вычисляются они по разному. поэтому вначале я сделал 4 разных класса, и 5 - FunctionData, в который бы я передавал функцию объекта одного из классов как параметр. Но так сделать не получилось (так и не знаю почему нельзя передать функцию объекта в конструктор), то решил все 4 класса сделать подобно FunctionData (наследовал от QwtSyntheticPointData, доопределял конструкторы). И действительно помогло(проблемка была только в том, что в QwtSyntheticPointData функция y() определена как const, и теперь все функции моего класса - const, иначе компилятор ругается в духе: ошибка: passing ‘const fbamec’ as ‘this’ argument of ‘double fbamec::skalyr2D(double, double, double)’ discards qualifiers). Берут меня смуты, по поводу того, что неверно это делать все функции класса как const. Уж хотелось бы решение найти поэлегантнее(с использованием FunctionData класса) Название: Re: Проблема с Qwt - Не хочет на вход подаваться функция экземпляра класса Отправлено: Racheengel от Февраль 16, 2011, 01:07 а определить double(*y)(double) через typedef и его использовать пробовали? результат тот же?
зы. вообще не есть хорошо в с++ таким образом функции использовать, имхо вместо этого создать класс для вычислений с виртуальным методом намного элегантнее. |