наследование c ++ (конструктор) — ошибка LNK 2019

Возможный дубликат:
Что такое неопределенная ссылка / неразрешенная внешняя ошибка символа и как ее исправить?

у меня есть Ошибка LNK который включает в себя класс A и его производный класс B. Точнее, у меня есть эта ошибка компиляции

Error   239 error LNK2019: unresolved external symbol "public: virtual __thiscall A::~A(void)" (??1A@@UAE@XZ) referenced in function "public: virtual __thiscall B::~B(void)" (??1B@@UAE@XZ)    D:\Products\path\file.lib(B.obj)
Error   240 error LNK2019: unresolved external symbol "public: __thiscall A::A(void)" (??A@@QAE@XZ) referenced in function "public: __thiscall B::B(void)" (??B@@QAE@XZ)    D:\Products\path\file.lib(B.obj)
Error   241 error LNK2019: unresolved external symbol "public: void __thiscall A::function(float * *,float * *,float * *,float * *,int)" (?function@A@@QAEXPAPAM000H@Z) referenced in function "public: class SomeType* __thiscall B::function_bis(void)" (?function_bis@B@@QAEPAVSomeType@@XZ) D:\Products\path\file.lib(B.obj)

Я предполагаю, что это может быть связано, скажем, с вызовом унаследованного конструктора или с несоблюдением подписи в каком-либо вызове функции () или function_bis (). Однако таких ошибок я не могу найти.

Есть ли у вас подсказка о возможном способе решения? Вот код для (упрощенно) A и B.

B.cpp

B::B(void)
{
}

B::B(Type1* d1, Type1* d2, Type1* r):A()
{
D1= d1;
D2= d2;
R= r;
}B::~B( void )
{
}

SomeType* B::function()
{
// do things
function_bis() ;
}

B.h

class B:
public A
{
public:

B(void) ;
B(Type1* , Type1* , Type1* );
virtual ~B(void);

SomeType* function() ;

private:

Type1* D1;
Type1* D2;
Type1* R;

};

A.cpp

using namespace std ;

A::A(void){}

A::~A(void){}

void A::function_bis(float** d, float** d2, float** d3, float** d4, int n)
{}

A.h

class A
{

public:
A(void);
virtual ~A(void);

void function_bis(float** , float** , float** , float** , int );

};

Спасибо!

1

Решение

Все выглядит законным в вашем коде.

Я предполагаю, что вы на самом деле не компилируете A.cpp или каким-то образом не включаете полученный объектный файл в свой шаг компоновки (вы пропускаете A :: A, A :: ~ A и A :: function_bis, которые определены в a.cpp).

2

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

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

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