VS2010C++ 콘솔 응용 프로그램에서 작업 중이며 동일한 유형 (정적)의 정적 및 동적 객체를 포함하는 Manager 클래스가 하나 생성됩니다.미해결 외부 C++, 기본 생성자
원래 관리자 클래스의 생성자에서 구성되는 클래스에 기본 생성자가 없다는 오류가 발생했습니다. 그러나 런타임에 인스턴스를 생성해야하므로 기본 생성자가 없어야합니다. 런타임에 입력 한 정보가 있음) 보유 클래스의 기본 생성자를 작성하여 (아무 것도하지 않음) 끝내고 계속할 수있었습니다.
는 다음 나는 프로그램에 필요한 모든 기능을 수행있어, 나는 functionB에서 참조되지 않은 외부 기호 MethodA에 대해 뭔가 "LNK2019의 전체 무리를 얻을.
처음에는 대한 기본 생성자가 필요합니까 이유 실행 시간에 수행해야하는 경우 관리되는 클래스?
두 번째 이러한 LNK2019를 제거하는 방법은 무엇입니까? (이 메서드는 모두 머리글에 인라인으로 표시되며 유일한 참조 또는 (정적 멤버의 경우) 및 -> (동적 멤버의 경우)의 액세스 한정자를 혼합해야하는 것과 관련이있을 수 있습니다.
편집 : 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 나는 괄호를 넣어 필요되었을 수 있습니다 생각하지만 다음 VS 구성원 기대에 대해 소리 쳤다
1>Project_1.obj : error LNK2019: unresolved external symbol "public: bool __thiscall Thing::operator==(class Thing const *)" ([email protected]@[email protected]@Z) referenced in function _wmain
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.
...
}
오류입니다. 다른 기능이 있지만 어쩌면 여기서 무슨 일이 일어나고 있는지 파악할 수 있다면 고칠 수 있어야합니다.
note 모든 구성원에 대해 액세스 한정자를 식별하는 것은 일반적인 C++ 규칙이 아니라는 것을 알고 있지만 4 가지 다른 c/C++ 컴파일러로 작업했으며 어느 누구도 불평하지 않았거나 문제가 발생하지 않았습니다. – gardian06
링크 문제 'inline'이라고 말하는 것으로 헤더에 연산자를 정의하겠다고 약속했으나 구현 파일에서만 정의했습니다. 인라인을 제거하십시오. –