使用命名空间的向量的使用是错误的。可能是一个错字。请改变如下。 使用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中存储一些数据并将其返回。我应该使用指针吗?。
由于
答案 0 :(得分:3)
您需要使用constructor initializer list:
MyClass(int k, std::vector<float>& v)
: myvector(v)
{
(...)
}
也不要使用类型名称作为变量/参数的名称。
的精彩解释类的成员在构造函数体之前初始化。因此,如果 你没有明确地初始化它们,它们是用它们初始化的 各自的默认构造函数。对于大多数数据类型,这通常都可以 (虽然它们会被初始化两次,一次默认 构造函数和第二次在正文中),但没有引用 它根本没有默认构造函数