【发布时间】:2017-01-29 19:19:47
【问题描述】:
我无法通过 set 方法为私有成员变量设置值。报错
member function 'setCost' not viable: 'this' argument has type 'const value_type' (aka 'const Position'), but function is not marked const
我有以下代码:
class Position {
public:
Position();
Position(int x, int y);
int getCost() const;
void setCost (int c);
private:
int x;
int y;
int cost;
};
void Position::setCost (int c){
this->cost = c;
}
class Board{
public:
Board();
Board(int N);
void shortestPath32 (Position start, Position end);
private:
int N;
char W[32][32];
};
void Board::shortestPath32 (Position start, Position end){
/* some code here */
set <Position> validMoves = getValidPositions(parent);
for(auto child =validMoves.begin(); child!=validMoves.end(); ++child ){
/*some code here ...*/
int c = 5
(*child).setCost(c);
}
}
}
很明显,如果我将 setCost 声明为void Position::setCost (int c) const,我无法在里面进行赋值操作。另外,我查看了 this thread 的 set 方法,但没有帮助。
【问题讨论】:
-
您正在尝试改变集合的元素。这个系列不允许这样做,因为它会破坏系列的内部组织,并且可能会违反元素的唯一性。
-
为什么成本是职位的一部分?最好有一张从职位到成本的地图。
标签: c++