0
와 부울 연산자를 오버로딩이 같은 클래스가 : 경로의 exit
에 마을 매개 변수에서멤버 함수
class AI
{
private:
struct Comparator
{
bool operator()(const Town* lfs, const Town* rhs)
{
return GetHeuristicCost(lfs) > GetHeuristicCost(rhs);
}
};
int GetHeuristicCost(const Town* town);
// constructor and variables
};
GetHeuristicCost
반환 발견합니다.
는 내가 뭘하려고 우선 순위 큐에 대한 부울 연산자를 오버로드이지만 나에게 그것은 나에게 오류를 제공하지만 나도 몰라하는 방법입니다 이유
a nonstatic member reference must be relative to a specific object
내가 알고있는 오류를 제공 struct 내부의 nonstatic 함수를 사용하는 것.
GetHeuristicCost
는 비 정적해야 내가
나는 내가
()
에 대한 두 가지 부울 오버로딩을 사용할 필요가 있기 때문에 구조체로 연산자를 오버로드 할 필요가 아무 소용에Town
클래스 내부GetHeuristicCost
이동 시도- 2 개의 다른 환경 그러나 동일한 매개 변수 (2 개의 도시)에. 즉 나는이 할 수 있도록 구조체 필요합니다)
부울 연산자 ((CONST 타운 * LFS, CONST 타운 * 우) { 반환 GetHeuristicCost (LFS)> GetHeuristicCost (우)
}
기본적으로이 같은 두 개의 구조체를 가진 계획 :struct Comparator1
{
bool operator()(const Town* lfs, const Town* rhs)
{
return GetHeuristicCost(lfs) > GetHeuristicCost(rhs);
}
};
struct Comparator2
{
bool operator()(const Town* lfs, const Town* rhs)
{
return GetHeuristicCost(lfs) + GetTotalCost (lfs, rhs) > GetHeuristicCost(rhs) + GetTotalCost (lfs, rhs);
}
};
나는이 '비교기 완 (*이)처럼 내 기능 중 하나를 사용하여 시도,' 'priority_queue <타운 *, 벡터, 완> PriorityQueue 인,' 그러나 그것은 나에게 오류를 제공 그 컴은 타입 이름이 아님 –
priority_queue, AI :: Comparator> priorityQueue –
Mike
나는 그것을 시도했지만 Comparator의 인스턴스를 생성하지 않는다는 사실을 좋아하지 않는다. 그것은 나에게 기본 생성자가 존재하지 않는다는 오류를 준다. 또한 중요한지는 모르겠지만 AI 객체가 계속 변하기 때문에'AI & outer'와'AI & o'에서'const'를 제거했습니다. –