Я работаю над консольным приложением VS2010C ++ и создал класс Manager, который содержит статические и динамические объекты того же типа (Thing), один из которых является вектором.
Первоначально я получил сообщение об ошибке в конструкторе класса менеджера, в котором говорилось, что класс, из которого он состоит, не имеет конструктора по умолчанию (но у него не должно быть конструктора по умолчанию, поскольку объекты должны быть созданы во время выполнения, и с время выполнения ввода информации) В итоге я создал конструктор по умолчанию для удерживаемого класса (который ничего не делает), а затем я смог продолжить после этого.
затем я закончил со всеми функциями, которые мне нужны для программы, и я получил целую кучу LNK2019 "кое-что о неразрешенном внешнем символе MethodA, указанном в функции B.
сначала зачем мне нужен конструктор по умолчанию для управляемого класса, если он мне нужен во время выполнения?
секунда, как мне избавиться от этих LNK2019? (все эти методы помечены как встроенные в заголовках, и это единственные ссылки на класс менеджера или из него, и нет именных конфликтов.) В качестве небольшой заметки она может иметь какое-то отношение к необходимости смешивать модификаторы доступа. (для статических элементов) и -> (для динамических элементов)?
Edit:
удалось избавиться от конструктора по умолчанию, ограничив его необходимость одним методом и изменив другие статические параметры на динамические
для ошибки компоновщика: в Thing.h
class Thing{
public : int ** Array;
public : int size;
public : Point pi;
public : SinglyLinkedList * moves;
...
public :inline bool operator==(const Thing * _thing);
...
};
Thing.cpp
bool Thing::operator==(const Thing * _Thing){
for(int ii = 0; ii < m; ii++){
for(int jj = 0; jj < m; jj++){
if(Array[ii][jj] != _Thing->Array[ii][jj]){
return false;
}
}
}
return true;
}
ThingMgr.h
class ThingMgr {
public : Thing * control;
public : Thing * Current;
public : Thing * previous;
public : int size;
main.cpp
int _tmain{
...
ThingMgr * TestTings= new ThingMgr(num);
...
if(testThings->control->operator==(testThings->Current)){ // pretty sure its here as it is not called anywhere else in the function.
...
}
ошибка
1>Project_1.obj : error LNK2019: unresolved external symbol "public: bool __thiscall Thing::operator==(class Thing const *)" (??8Board@@QAE_NPBV0@@Z) referenced in function _wmain
Я подумал, что, возможно, нужно было поставить круглые скобки, но потом VS закричал, ожидая члена. Есть и другие функции, но, может быть, если я смогу понять, что здесь происходит, то это должно быть исправлено