Форум программистов, компьютерный форум CyberForum.ru

Передача указателей на функции в экземпляр класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ на языке с http://www.cyberforum.ru/cpp-beginners/thread62750.html
кто сможет помогите пожалуйста!Даны 3 числа а,в,с.Найти значение минимального отклонения каждого из них от среднего арифметического.Заранее спасибо!
C++ Нужно переделать Дано натуральное число .Установить, является ли последовательность его цифр при просмотре их слева направо упорядоченной по возрастанию.У меня тут есть программа только для четырёхзначного числа # include <iostream.h> # include <windows.h> int main() { SetConsoleOutputCP(1251); int A, a, b, c, d; cout<<"Введите число"; cin>>A; http://www.cyberforum.ru/cpp-beginners/thread62744.html
Массив(Замена выбранных элементов). Область памяти(замена выбранных элементов) C++
Собственно 3 задачи в которых нужна помощь...Может кто нить встречался с таким родом задач? 1.Создать массив из 20 элементов, заменить 5 выбранных пользователем элементов массива и вывести новый на экран. в этой задаче я не могу понять как вывести новый массив из 20 элементов с заменёнными элементами Мой вариант #include "stdafx.h"
C++ Ввести одномерный массив A , вывести его
Помогите пожалуйста если не затруднит. Ввести одномерный массив A , вывести его. Найти наибольший элимент среди тех , которые находятся на нечётных позициях. На полученное значением уменьшить элементы с чётными индексами массива.
C++ Список http://www.cyberforum.ru/cpp-beginners/thread62717.html
Дан список, элементы которого являются координатами вектора в n-мерном пространстве. Надо найти длину вектора.
C++ Image->Transparent Есть у меня два изображения. Мне необходимо, чтобы одно находилось над другим было прозрачным, то есть без белого фона. Установил параметр Transparent в true, но результат не тот, которого я ожидал. Фон убрался не ровно по контуру рисунка, а остался как-бы "квадратами" вокруг рисунка. Подскажите, как сделать, чтоб фон убрался по контуру. Заранее спасибо подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
11.11.2009, 01:44  [ТС]     Передача указателей на функции в экземпляр класса
Что-то я вообще не понимаю,что происходит.Всё указал,все пути до библиотек,Makefile выглядит в общем виде так:
Код
CXX = g++
CXXFLAGS = -ansi -Wall
DFLAGS = -MD
LD = $(CXX)
LDFLAGS = -lSDL -R/media/ext3/C++/Projects/CodeBlocks/bGUI/libGUI.so
OFILES = debugger.o error_handler.o value_class.o variable_class.o parser.o  \
         syntax.o expression.o statement.o interp.o memory.o array.o label.o \
         options.o function.o lib.o graphics/graphics.o driver.o
CXXFLAGS += -I. -Igraphics -I/usr/share/qt4/mkspecs/linux-g++ -I/usr/include/qt4/QtCore \
                        -I/usr/include/qt4/QtGui -I/usr/include/qt4
LIBS          = $(SUBLIBS)  -L/usr/lib -lQtGui -lQtCore -lpthread
RM = rm -f
TARGET = basin

all: $(TARGET)

$(TARGET): $(OFILES)
	$(LD) $(LDFLAGS) $(OFILES) -o $(TARGET) $(OBJCOMP) $(LIBS)

-include $(OFILES:.o=.d)

%.o : %.cpp
	$(CXX) -c $(DFLAGS) $(CXXFLAGS) $< -o $@

clean:
	$(RM) $(TARGET) *.o *.d *.bak *~* core */*.o */*.d */*.bak *.dat
Получаю странную ошибку при компиляции в консоли:
Код
driver.cpp:79: error: no matching function for call to ‘MainWindow::pFuncTake(_char_t*&, void (&)(const _char_t*), void (&)(), void (&)(), void (&)())’
mainwindow.h:44: note: candidates are: void MainWindow::pFuncTake(void (*)(char*), void (*)(), void (*)(void*), void (*)())
make: *** [driver.o] Error 1
Дело в том,что функции-кандидата вообще не существует! Признаюсь,я такой вариант пробовал,но с того момента уже сделал несколько правок и перекомпиляций библиотеки.Вот точные фрагменты кода,где встречается pFuncTake:
mainwindow.h-интерфейс библиотеки(в описании класса MainWindow)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public:
        MainWindow(QWidget *parent = 0);
        void pFuncTake( _char_t *path,
                        void (*p1)(_char_t *filename1),
                        void (*p2)(),
                        void (*p3)(),
                        void (*p4)() );
         ....
    private:
         .....
        char *filename;
        void (*pFunc_parserInit)(_char_t *filename1); //В эти данные сохраняются указатели на функции
        void (*pFunc_syntaxCheck)();
        void (*pFunc_interpRun)();
        void (*pFunc_memoryFree)();

mainwindow.cpp-код библиотеки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void
MainWindow::pFuncTake( _char_t *path,
                                      void (*p1)(_char_t *filename1),
                                      void (*p2)(),
                                      void (*p3)(),
                                      void (*p4)() )
{
   pFunc_parserInit  = p1;
   pFunc_syntaxCheck = p2;
   pFunc_interpRun   = p3;
   pFunc_memoryFree  = p4;
   strcpy(filename,path);
}

driver.cpp - за пределами библиотеки(использование)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
#include "mainwindow.h"
_int_t main(int_t argc, _char_t* argv[])
{
    ...
   if (something)
   {
          QApplication app(argc, argv);
          Q_INIT_RESOURCE(dockwidgets);
          MainWindow window;
          window.pFuncTake(filename,parser_Init,syntax_Check,interp_Run,
                                                                   memory_Free);
          window.resize(640, 480);
          window.show();
   }
   ...

Всё.Больше эта функция нигде не присутствует.Может каким-то образом "откуда-то" компилятор видит старые объектники,чудесным образом где-то сохранившиеся? Но я ничего не менял такого.Чудеса прямо..
 
Текущее время: 02:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru