构造函数中的引用向量:未初始化的引用

Vector by referece in constructor: uninitialized reference

本文关键字:引用 初始化 向量 构造函数      更新时间:2023-10-16

使用命名空间的向量是错误的。可能是错别字。请按如下方式更改。使用 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中存储一些数据并返回它。我应该改用指针吗?

谢谢

您需要使用构造函数初始值设定项列表:

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

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

来自user3159253的这个很好的解释

类的成员在构造函数主体之前初始化。所以如果 您没有显式初始化它们,它们是用它们的 各自的默认构造函数。对于大多数数据类型,这通常是可以的 (尽管它们将被初始化两次,一次是默认的 构造函数和正文中的第二次),但没有引用 根本没有默认构造函数