2014-06-29 2 views
-3

Может кто-нибудь помочь мне со следующим:Ошибка компоновщика C++ ... почему?

class Bix 
{ 
    public: 
    static void MyFunction(); 
}; 
int main() 
{ 
    void(*ptr)() = &Bix::MyFunction; 
    return 0; 
    } 

Это показывает ошибку компоновщика !!! Зачем?

+3

Что говорит об ошибке? Это действительно полный код? Если нет, где это определение 'MyFunction()'? – user1118321

+0

Возможны варианты ответа: а) Программа сообщает об ошибке, поскольку указатель на функцию-член не может быть определен за пределами определения класса. b) Программа сообщает об ошибке, поскольку указатель на статическую функцию-член нельзя определить. c) Программа сообщает об ошибке, поскольку указатель на функцию-член не может быть определен без объекта. d) Программа сообщает об ошибке компоновщика. Ответ был: d) – user3020345

+0

@ user3020345 Какие _answer options_ вы говорите, пожалуйста?!? Ответ таков: вам не хватает определения для 'static void MyFunction();' из того, что вы на самом деле показываете, периода! –

ответ

2

Bix::MyFunction заявлено, но не определено. Попробуйте

class Bix 
{ 
    public: 
    static void MyFunction() { printf("Bix::MyFunction"); } 
}; 

См. here для рабочего варианта.

+0

Спасибо. Это единственная причина, по которой она показала ошибку компоновщика – user3020345

+0

. Вариантами ответа были: а) программа сообщает об ошибке, поскольку указатель на функцию-член не может быть определен за пределами определения класса. b) Программа сообщает об ошибке, поскольку указатель на статическую функцию-член нельзя определить. c) Программа сообщает об ошибке, поскольку указатель на функцию-член не может быть определен без объекта. d) Программа сообщает об ошибке компоновщика. – user3020345

+0

@ user3020345 Да, поскольку ошибка ушла с этим изменением. Что касается ваших опций, подумайте о том, какие из них заявляют, что 'void (* ptr) ...' should * never * работают, и видите, что вы можете исключить их сейчас, когда простое изменение получило код для ссылки. Остается ответ. –

Смежные вопросы