【发布时间】:2014-01-02 21:21:49
【问题描述】:
我有这样的课:
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 将城镇参数的启发式返回到路径的exit。
我想要做的是为优先级队列重载 bool 运算符,但它给了我错误
a nonstatic member reference must be relative to a specific object
我知道为什么会出现此错误,但我不知道如何在 Comparator 结构中使用非静态函数。
-
GetHeuristicCost必须是非静态的 - 我尝试在
Town类中移动GetHeuristicCost无济于事 -
我需要使用结构重载运算符,因为我需要在
()上使用两个不同的布尔重载,用于两种不同的情况,但具有相同的参数(两个城镇)。换句话说,我需要结构,所以我不能这样做:bool operator()(const Town* lfs, const Town* rhs) { 返回 GetHeuristicCost(lfs) > GetHeuristicCost(rhs); }
基本上我打算有两个这样的结构:
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);
}
};
【问题讨论】:
标签: c++ function struct operator-overloading non-static