1

我正在尝试编写一段代码,其中我通过类的构造函数通过引用传递向量并更新类的成员函数中的向量。但是当我回到主函数时,向量中没有更新:

// 头文件

 class A{
 private:
        std::vector<T> &x;
 public:
        A(std::vector<T>& x_):x(x_) {}
        int func();
 };

// cp文件

int A::func() {
     // process done
     T temp;
     x.push_back(temp);
}

// 主功能

int main() {
    std::vector<T> vec;
    A a(vec);
    a.func();
}

我尝试将向量更改为类中的指针而不是引用,但函数运行后向量不会更新。关于在程序中改变什么有什么建议吗?

4

1 回答 1

0
#include <iostream>   
#include <vector>  
using namespace std;

class A
{
    std::vector<int> &x;
public:
    A(std::vector<int>& x_):x(x_) {}
    int func();
};

int A::func(){
    int temp=0;
    x.push_back(temp);
    return 0;
}

int main(){
    std::vector<int> vec;
    A a(vec);
    a.func();
    return 0;
}

一切正常 vec 已更改。我认为您还有另一个您甚至不知道的问题或错误。

于 2013-07-20T10:53:14.187 回答