gpt4 book ai didi

c++ - 必须初始化字段值

转载 作者:行者123 更新时间:2023-11-30 02:21:44 25 4
gpt4 key购买 nike

考虑我的类定义,它是 Ring<T> 的嵌套类:

template<class T>
class Ring<T>::Iterator{
private:
int i_pos;
Ring<T> &value;
public:
Iterator(int index, Ring<T> &other) : i_pos(index){
value = other;
}
};

构造函数抛出一个错误,即value必须初始化。所以我猜,是因为 Iterator在类内Ring , 我们必须首先初始化 Ring<T>构造其内部类之前的对象 Iterator ,我说得对吗?

Iterator(int index, Ring<T> &other) : value(other), i_pos(index){
}

最佳答案

初始化变量与分配变量之间有很大区别。

你在做什么

Iterator(int index, Ring<T> &other) : value(other), i_pos(index){
}

正在初始化变量valuei_pos

当你做的时候

Iterator(int index, Ring<T> &other) :  i_pos(index){
value = other;
}

您初始化了 i_pos,但您尝试在构造函数主体中分配给变量 value(在所有构造和初始化完成后调用)。

而且您应该知道,您不能分配给引用。引用必须被初始化。这是因为对(初始化的)引用的任何访问都会对引用的数据执行操作,即引用变量引用的内容。

详细说明,请参见示例代码:

int a, b = 5;
int& r = a; // Make r reference a

r = b; // Assign the value of b to the variable a, equal to a = b

关于c++ - 必须初始化字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48034982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com