Создание потока в NachOS с использованием класса C ++

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() метод. Компилятор дает мне «недопустимое использование нестатической функции-члена». Где здесь ошибка?

0

Решение

Вы не сказали, на какую строку жалуется компилятор, но я собираюсь догадаться, что именно эта:

void (Producer::* ptfptr) () = &Producer::Shout;

Здесь вы создаете указатель на функцию, используя адрес нестатической функции. Нестатическим функциям нужен объект для работы, а у вас его еще нет.

Посмотри на этот вопрос и его лучший ответ для хорошего примера того, как сделать то, что вы ищете.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]