class Producer
{
public:
Producer(){
}
void Shout(){
for(int i=0;i<10;i++){
printf("I am a producer!!\n");
}
}
};
void ThreadTest()
{
void (Producer::* ptfptr) () = &Producer::Shout;
Producer prod;
(prod.*ptfptr) ();
Thread *pt = new Thread("producer");
pt->Fork((prod.*ptfptr)(),0);
}
Я пытаюсь создать продюсера в начос и для этого я создаю класс Producer
(необходимо для моего назначения). У меня есть нестатическая функция-член Shout()
в объявлении класса, и я использовал приведенный выше код для создания и использования указателя на функцию Shout()
метод. Компилятор дает мне «недопустимое использование нестатической функции-члена». Где здесь ошибка?
Вы не сказали, на какую строку жалуется компилятор, но я собираюсь догадаться, что именно эта:
void (Producer::* ptfptr) () = &Producer::Shout;
Здесь вы создаете указатель на функцию, используя адрес нестатической функции. Нестатическим функциям нужен объект для работы, а у вас его еще нет.
Посмотри на этот вопрос и его лучший ответ для хорошего примера того, как сделать то, что вы ищете.
Других решений пока нет …