Я пытаюсь реализовать вложенный класс C++ в одном точечном классе A.C++ вложенный класс неразрешенный внешний символ
это библиотека, и она прекрасно строится.
но когда я пытаюсь связать его с приложением, получите сообщение об ошибке связи.
любой совет очень оценен!
в основном, я хочу, чтобы сохранить доступ к B из-за пределов класса А.
a.lib (aa.obj): ошибка LNK2019: неразрешенный внешний символ «общественности: __thiscall A :: B :: B (аннулируются)»...
class A // singleton
{
//...
private:
class B{//...};
std::vector<std::unique_ptr<B>> var;
}
EDIT: класс B имеет определение (B.cpp) и заголовок (Bh)
я пытаюсь скрыть Bh A nd введите B вложенный класс.
если я включать "B.h" это компилировать и ссылку отлично, но затем класс открыт B наружу ..
EDIT: решена! благодаря molbdnilo
Вы определили класс B внутри A? То есть класс A :: B {...}; и void A :: B :: foo (Bar baz) {...}. - molbdnilo
Редактировать: на это применяется исходный код.
// A.h
class A // singleton
{
//...
private:
class B;
static std::vector<std::unique_ptr<B>> var;
}
// A.cpp
#include "B.h"
std::vector<std::unique_ptr<A::B>> A::var;
// B.h
#include "A.h"
class A::B
{
//...
};
EDIT: нашел еще одно простое решение, просто исключен класс B в классе А. я не подвергать что-либо из класса В.
// private.h
extern std::vector<std::unique_ptr<B>> var;
//A.cpp
std::vector<std::unique_ptr<B>> var;
Жалоба на то, что вы объявили конструктор для класса B, но на самом деле не реализовали его. Вы должны показать больше кода (т. Е. Полного минимального, жизнеспособного, примера). – selbie
@selbie я отредактировал мой вопрос. – sailfish009
Вы * определили * класс 'B' внутри' A'? То есть 'class A :: B {...};' и 'void A :: B :: foo (Bar baz) {...}'. – molbdnilo