class figure {
private:
void (*mult)(); // указатель на функцию
public:
// Конструктор
figure(void (*f)(void))
{
// Запоминаем указатель на переданную функцию
mult = f;
}
void rectangle()
{
// Используем
mult();
}
void draw()
{
rectangle();
}
};
фича с ссылками на функцию
Код:
class figure {
public:
void rectangle(void (*mult)(void)); // ф-я ссылается на ф-ю
void draw(void); // некая ф-я или proc
};
/*
описываю rectangle
*/
void figure::rectangle(void (*mult)(void)) {
mult();
}
/*
теперь мне хотелось бы узнать, как вызвать rectangle
внутри какой-либо функции, которая является членом этого же класса, т.е. содержимое
функции на которую ссылается rectangle меня не интересует
*/
void figure::draw(void) {
rectangle(mult); // конечно же, НЕВЕРНО, что же здесь нужно написать?
}
public:
void rectangle(void (*mult)(void)); // ф-я ссылается на ф-ю
void draw(void); // некая ф-я или proc
};
/*
описываю rectangle
*/
void figure::rectangle(void (*mult)(void)) {
mult();
}
/*
теперь мне хотелось бы узнать, как вызвать rectangle
внутри какой-либо функции, которая является членом этого же класса, т.е. содержимое
функции на которую ссылается rectangle меня не интересует
*/
void figure::draw(void) {
rectangle(mult); // конечно же, НЕВЕРНО, что же здесь нужно написать?
}
наверно у тебя в вызове rectangle(mult) mult имеет тип не void (*)(void)
Либо, как отметил Bard, mult описана неверно (не так, как это требуется в описании параметра функции rectangle)
Либо функция mult определена вне зоны видимости и не видна из void figure::draw(void)
А в чём у вас вообще проблема? Не компилируется или компилируется, но не работает? Если допустить, что некая функция, скармливаемая методу rectangle(), описана, то здесь всё верно...
сформулирую вопрос немного по другому: как переменной присвоить функцию? как функции присвоить функцию? mult не определена. мне нужно объявить ее в классе так что бы ей можно было присвоить ф-ю на которую ссылается rectangle, a затем просто вызывать mult в каком-либо члене класса, как если бы это была обыкновенная proc или func.
Код:
Использование:
Код:
void print()
{
printf("test...");
}
int main(int argc, char *argv[])
{
figure x(print);
x.draw();
}
{
printf("test...");
}
int main(int argc, char *argv[])
{
figure x(print);
x.draw();
}
GreenRiver большое спасибо.