ошибка LNK2019: неразрешенный внешний символ - PullRequest
0 голосов
/ 25 марта 2012
#include <iostream>
using namespace std;

class A {
public:
    void function( int num);
    bool function1()const;
    virtual bool function2() const=0;
};

class B:public A {
public :
    bool function2()const;
};

int _tmain(int argc, _TCHAR* argv[])
{
    void (A::* p)(int)= &A::function;  //不是地址,而是一个指向成员函数的指针
    // Edit: Google translation of the above comment is
    // "Not address, but a pointer to a member function pointer"

    bool (A::* p1)()const =&A::function1;  // 指向成员函数的指针可以指向一个常量成员函数
    // Edit: Google translation of the above comment is
    // "Point to a member function pointer can point to a const member function"

    B b;
    A *a=&b;
    (a->*p1)();
    (b.*p1)();

    return 0;
}

но когда я связываю это:

1>c.obj : error LNK2019: unresolved external symbol "public: bool __thiscall A::function1(void)const " (?function1@A@@QBE_NXZ) referenced in function _wmain
1>c.obj : error LNK2019: unresolved external symbol "public: void __thiscall A::function(int)" (?function@A@@QAEXH@Z) referenced in function _wmain
1>c.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall B::function2(void)const " (?function2@B@@UBE_NXZ)

вы можете сказать мне, почему?

Ответы [ 2 ]

2 голосов
/ 25 марта 2012

Вы не реализовали A::function(), A::function1() или B::function2().Вам нужно это сделать.

1 голос
/ 25 марта 2012

A::function1, A::function и B::function2 все объявлены, но не определены.Вы не можете получить указатель на функцию, если она не определена, куда она будет указывать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...