私は構造を持っています:
struct node
{
QPoint position;
QVector<node> neighbours;
void add(QPoint);
void addNeighbours(QVector<node>);
...
};
メソッド付き:
void node::add(QPoint p)
{
position = p;
}
void node::addNeighbours(QVector<node> n)
{
neighbours = n;
}
ただし、addNeighboursを使用しようとすると、次のエラーが発生します。
error: C2662: 'node::addNeighbours' : cannot convert 'this' pointer from 'const node' to 'node &'
Conversion loses qualifiers
オンラインで見ると、解決策は次のようになっていると思います。正しいポインタを使用し、場合によってはQVectors::Iterator()
。私は解決策を思い付くことができませんが、正しい方向へのポインタまたはこれが起こっている理由の説明は大歓迎です。
主要:
int main(int argc, char *argv[])
{
QVector<node> map;
QVector<node> tmp;
node n;
//Populate map
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
{
n.add(QPoint(i,j));
map.append(n);
}
//Add required nodes to tmp
tmp.append(map.at(1));
tmp.append(map.at(3));
//Set the neighbour nodes of map(0) using tmp vector
map.at(0).addNeighbours(tmp);
}