矢量通过构造函数中的referece:未初始化的引用

时间:2016-01-25 11:49:55

标签: c++ vector constructor pass-by-reference

使用命名空间的向量的使用是错误的。可能是一个错字。请改变如下。 使用std :: vector 我必须遵循以下代码:

class MyClass{

private:

std::vector<float>& myvector;

public:

MyClass(int k,std::vector<float>& vector){

(...)

this->myvector=vector;

(...)

}

我创建了一个像这样的MyClass对象:

(...)

std::vector<float> vector;
vector.reserve(k);

(...)

MyClass A= MyClass(k,vector);

(...)

弹出错误告诉我MyVector是未初始化的参考。我只是希望MyClass在MyVector中存储一些数据并将其返回。我应该使用指针吗?。

由于

1 个答案:

答案 0 :(得分:3)

您需要使用constructor initializer list

MyClass(int k, std::vector<float>& v)
    : myvector(v)
{
    (...)
}

也不要使用类型名称作为变量/参数的名称。

来自user3159253

的精彩解释
  

类的成员在构造函数体之前初始化。因此,如果   你没有明确地初始化它们,它们是用它们初始化的   各自的默认构造函数。对于大多数数据类型,这通常都可以   (虽然它们会被初始化两次,一次默认   构造函数和第二次在正文中),但没有引用   它根本没有默认构造函数