Неразрешенный токен LNK 2028 и неразрешенный внешний символ LNK 2019

Я работаю с VS 2013, используя формы пользовательского интерфейса. В MyForm.h есть код

class A
{
public:
    A();
    ~A();
private:
};

void b()
{
    A var;
}

Я получаю эти ошибки:

Error   2   error LNK2028: unresolved token (0A00000A) "public: __thiscall A::A(void)" (??0A@@$$FQAE@XZ) referenced in function "void __cdecl b(void)"
Error   3   error LNK2028: unresolved token (0A00000B) "public: __thiscall A::~A(void)" (??1A@@$$FQAE@XZ) referenced in function "void __cdecl b(void)"
Error   4   error LNK2019: unresolved external symbol "public: __thiscall A::A(void)" (??0A@@$$FQAE@XZ) referenced in function "void __cdecl b(void)"
Error   5   error LNK2019: unresolved external symbol "public: __thiscall A::~A(void)" (??1A@@$$FQAE@XZ) referenced in function "void __cdecl b(void)"

Я уже гуглил около двух часов, но все равно безрезультатно.


person Entrack    schedule 04.01.2015    source источник
comment
Вы не определили ни конструктор, ни деструктор. Если вам нужны определения по умолчанию, напишите = default после обоих объявлений (перед точкой с запятой).   -  person Columbo    schedule 04.01.2015
comment
Грасиас. Сочувствовал себя глупым.   -  person Entrack    schedule 04.01.2015


Ответы (1)


Вы должны определить конструктор и деструктор, например:

class A{
public:
    A();
    ~A();
private:
};
  A::A(){
}
  A::~A(){
}
void b()
{
  A var;
}
person János Simonyi    schedule 04.01.2015
comment
Спасибо, но Коломбо уже решил это в комментариях. Знаете ли вы, кстати, можно ли использовать пару ‹Тип, int› Если Тип - это шаблон ‹Тип класса›? компилятор сообщает об ошибке C2079: 'std :: pair ‹Type, int› :: first' использует неопределенный класс 'Type' - person Entrack; 04.01.2015
comment
Вы должны написать: template ‹class Type› перед определением каждой функции, если вы определяете ее вне класса. - person János Simonyi; 04.01.2015
comment
Я имею в виду, что у меня есть template <class Type> class List { private: list < pair < Type, int > > _list; int amount, max_amount, type; public: Он говорит, что 'std :: pair ‹Type, int› :: first' использует неопределенный класс 'Type' - person Entrack; 04.01.2015
comment
Я не знаю От этого. Вы можете как-нибудь прислать мне полный код? - person János Simonyi; 04.01.2015
comment
Я не уверен. Я просто не могу получить пару ‹› аргумента, если мы определили его как тип шаблона (например, шаблон ‹тип класса›). Не работает. Говорит: 'std :: pair ‹Type, int› :: first' использует неопределенный класс 'Type' - person Entrack; 04.01.2015
comment
Я думаю, после того, как вы определите шаблон, вы сможете использовать его где угодно. Не знаю, извини. Но задайте другой вопрос. - person János Simonyi; 04.01.2015