我目前有2节课。我的机器人:
struct Data{
boost::intrusive::list_member_hook<> node;
inline Data* get_next();
}
namespace bis = boost::intrusive;
using List = bis::list<Data,
bis::member_hook<Data, bis::list_member_hook<>, &Data::node>
>;
Data* Data::get_next() {
return &*++List::s_iterator_to(*this);
}
和我的主要代码。 我遇到的问题是在尝试设置我的主班学位时。 我正在尝试做的事情类似于:
public class Bot {
private int X;
private int Y;
private int degress;
public int getX() {
return X;
}
public int getY() {
return Y;
}
public int getDegress() {
return degress;
}
public void setX(int X) {
this.X = X;
}
public void setY(int Y) {
this.Y = Y;
}
}
但是给了我这个错误“ ArrayList类型的set(int,Bot)方法不适用于参数(int,int)”
以及我的ArrayList的外观
bots.set(bots.get(1).getDegress(),+1);
所以总结一下。我怎么能用bots.set改变X,Y或Degress?
答案 0 :(得分:3)
bots.set
是一种ArrayList
方法。要变异Bot
实例,必须调用Bot
方法。
应该是:
Bot bot = bots.get(1);
bot.setDegrees(bot.getDegrees()+1);
或者,当然,您的setDegrees
类中需要一个Bot
方法。
答案 1 :(得分:1)
bots.set(bots.get(1).getDegress(),+1);
在此行上,您正在调用ArrayList类的Set方法,该方法用于替换列表中指定索引处的元素。它有2个参数,首先是要替换的元素的索引,然后是第二个要替换的元素。因此,在您的情况下,一个int
和一个Bot
类的实例。
要在您的degrees
类对象中设置Bot
,您首先必须从list bots
获取它,并在bot类的对象上使用setDegrees()
您的Bot课程似乎缺少此内容。
bots.get(1).setDegrees(bots.get(1).getDegress()+1);