构造函数中的引用向量:未初始化的引用
Vector by referece in constructor: uninitialized 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中存储一些数据并返回它。我应该改用指针吗?
谢谢
您需要使用构造函数初始值设定项列表:
MyClass(int k, std::vector<float>& v)
: myvector(v)
{
(...)
}
也不要使用类型的名称作为变量/参数的名称。
来自user3159253的这个很好的解释
类的成员在构造函数主体之前初始化。所以如果 您没有显式初始化它们,它们是用它们的 各自的默认构造函数。对于大多数数据类型,这通常是可以的 (尽管它们将被初始化两次,一次是默认的 构造函数和正文中的第二次),但没有引用 根本没有默认构造函数
相关文章:
- C++-模板嵌套类的引用初始化无效
- 在引用初始化中使用已删除的复制构造函数进行复制初始化
- 模板流运算符重载错误:引用初始化无效,与basic_istream和basic_ifstream之间的差异有关
- 具有字符串文本构造函数的类不适用于 const 引用初始化
- 类型为"短整型 (&)"的引用初始化无效
- 引用初始化和常量表达式
- 在Visual Studio 2013中为rvalue引用初始化捕获
- 从大括号括起来的初始值设定项列表进行的Lvalue引用初始化无法编译
- Visual C++ 2015 中右值的非常量引用初始化无效
- 是否可以使用对派生类实例的基类引用初始化派生类引用
- 类型'int&'的引用初始化无效,传递参数 1 时出错
- 引用初始化表单
- 从类型为"int*"的临时引用初始化类型为"int&"的非常量引用无效
- 简单的C++日志记录类-ostream引用初始化
- 错误:类型为"cv::Mat&"的非常量引用初始化无效
- 为什么我收到类型为"const vec&"的引用初始化无效
- 从类型为"char*"的临时引用初始化类型为"char*&"的非常量引用
- 为什么这会发送一个关于引用初始化无效的错误
- 为什么此处不对引用初始化执行复制初始化?
- std::vector不会为多个向量条目创建cv::Mat的新引用——初始化矩阵时,数据会被覆盖