vetcor 作为函数参数的问题
准备在一个类里面操作一个全局的数据结构
class node
{
public:
node(vector<int> & _a){ a = _a }
work(){
//这里直接操作 a ,对a 的改变,会最终反映到 _a 这个全局变量中么
}
private :
vector <int > a;
}
[解决办法]
#include "stdafx.h"#include <vector>using std::vector;class Node{private: vector<int> m_vct;public: Node(vector<int>& v_vct) { m_vct = v_vct; } void work() { m_vct.push_back(236545); }};int _tmain(int argc, _TCHAR* argv[]){ vector<int> vct; Node node(vct); node.work(); //运行到这,vct中元素个数为0,node.m_vct元素个数为1 system("pause"); return 0;}
[解决办法]
vector的运算符= 应该是把vector的内容逐个复制了吧,所以work()里面操作的是node对象的成员变量,跟全局没有关系吧
[解决办法]
就算是传指针进函数里,也要对指针操作,才能改变其内容吧。
[解决办法]
class node{public: node(std::vector<int> & _a):a(_a){} void work(){ //这里直接操作 a ,对a 的改变,会最终反映到 _a 这个全局变量中么 }private : std::vector <int > &a;};
[解决办法]
int a = 1;int &b = a;int *p;p = &a;