C++在类之间传递值

C++在类之间传递值,c++,pointers,reference,C++,Pointers,Reference,我有两个类,Qtree和Qnode: 然后在main.cpp中: 计算结果为0。我预计是100英镑。 我是C++初学者,从谷歌上读到很多相关的东西。然而,我们仍然不知道如何让它发挥作用 如何解决此问题?您需要更改setRoot,以便它通过引用获取参数 void QTree::setRoot(QNode &q){ q.bound = bound; } 您的代码是按值传递的,因此setRoot修改q的副本。根据您的注释,我尝试了serRootQNode*q,主要是执行qt.setR

我有两个类,Qtree和Qnode:

然后在main.cpp中:

计算结果为0。我预计是100英镑。 我是C++初学者,从谷歌上读到很多相关的东西。然而,我们仍然不知道如何让它发挥作用

如何解决此问题?

您需要更改setRoot,以便它通过引用获取参数

void QTree::setRoot(QNode &q){
    q.bound = bound;
}

您的代码是按值传递的,因此setRoot修改q的副本。

根据您的注释,我尝试了serRootQNode*q,主要是执行qt.setRoot&q;,它是有效的。你的建议也很有效。我的建议和你的建议有什么不同吗?它们基本上是一样的。传递引用更方便,因为您只需将它写入一个地方,就不必记住使用和在所有调用函数的地方。使用指针是C方式来实现它,C++使引用变得更简单。
//Quadtree.cpp:
#include "QuadTree.hpp"

QTree::QTree(){
    bound = sf::Vector2f(100,200);
}

void QTree::setRoot(QNode q){
    q.bound = bound;
}
#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;

}
void QTree::setRoot(QNode &q){
    q.bound = bound;
}