我有2个课程,Qtree
和Qnode
:
//QuadTree.hpp:
#include <stdio.h>
#include <iostream>
#include <SFML/Graphics.hpp>
class QNode;
class QTree{
public:
int depth;
sf::Vector2f bound;
QTree();
void setRoot(QNode q);
};
class QNode{
public:
bool isLeaf = false;
int layer = 0;
sf::Vector2f position;
sf::Vector2f bound;
};
和
//Quadtree.cpp:
#include "QuadTree.hpp"
QTree::QTree(){
bound = sf::Vector2f(100,200);
}
void QTree::setRoot(QNode q){
q.bound = bound;
}
然后在main.cpp
:
#include <iostream>
#include <SFML/Graphics.hpp>
#include "QuadTree.hpp"
using namespace std;
int main(){
QTree qt;
QNode q;
qt.setRoot(q);
cout << q.bound.x <<endl;
}
,cout
结果为0
。我期待它是100
。
我是c ++初学者,并且从google
读了很多相关内容。但是仍然不确定如何使其工作。
我该如何解决这个问题?
答案 0 :(得分:1)
您需要更改setRoot()
,以便通过引用获取参数。
void QTree::setRoot(QNode &q){
q.bound = bound;
}
您的代码是按值传递的,因此setRoot()
会修改q
的副本。