ссылка на пустоту - PullRequest
       49

ссылка на пустоту

1 голос
/ 13 февраля 2011

У меня странное ощущение, что это может быть проблемой из-за компиляторов.

void SetRenderFunction(void (&newRenderFunction(void)));

Это заставляет GCC объявить, что я "не могу объявить ссылку на 'void'"

Теперь я использовал тот же самый прототип функции (более или менее) под Visual Studio на Windows.В Windows у меня было другое имя функции, и вместо того, чтобы передавать указатель на функцию, которая принимает void, он взял указатель на какой-то другой нужный мне объект.

Если я использую * вместо & Это предотвращает эту проблему, но вместо этого, когда я пытаюсь передать указатель на функцию, у меня возникают проблемы приведения типов: он пытается преобразовать его из void (*)() в void* (*)()

Спасибо.

Ответы [ 3 ]

6 голосов
/ 13 февраля 2011

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

Мой вызов функции:

void SetRenderFunction(void (&newRenderFunction(void)));

Бит, который был неправильным, здесь - - - - - - - - - - - - - - - - - - - - ^ и - ^

Я должен был поставить набор скобок вокруг &newRenderFunction и параметры для этого указателя функции. Вот так:

void SetRenderFunction(void (&newRenderFunction)(void));

Исправление здесь - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ^ - - - - - ^

3 голосов
/ 13 февраля 2011

Не скомпилируется с Comeau Online . Ergo, это неправильно.

Вы можете сделать & hellip;

void setRenderFunction( void (&newRenderFunction)() );

& hellip; но лучше сделай & hellip;

void setRenderFunction( void (*newRenderFunction)() );

& hellip; потому что запись указателя более известна и работает также с C.

Приветствия & hth.,

2 голосов
/ 13 февраля 2011
void SetRenderFunction(void (*newRenderFunction)(void));
void SetRenderFunction(void (&newRenderFunction)(void));
...