gpt4 book ai didi

c++ - 转换问题

转载 作者:太空狗 更新时间:2023-10-29 21:30:04 26 4
gpt4 key购买 nike

我有一个类:

      template<class T>
class MyClass
{
public:
class Iterator {
public:
Iterator(MyClass<T>&){/*some code*/};
};


operator Iterator();
Iterator& begin();
};

template<class T>
MyClass<T>::operator typename MyClass<T>::Iterator()
{
return MyClass::Iterator(*this);
}

template<class T>
typename MyClass<T>::Iterator& MyClass<T>::begin()
{
return *this;//<---------------cannot convert from MyClass to MyClass<T>::Iterator
}

为什么我会收到错误消息?我提供了转换运算符,所以一切都应该没问题。

最佳答案

begin() 无法返回对 Iterator 的引用;它需要按值返回一个 Iterator

当调用用户声明的到 Iterator 的转换时,它会产生一个临时的 Iterator 对象。非常量引用不能绑定(bind)到临时引用,因此当 begin() 返回引用时会出现错误。

也就是说,拥有一个返回 Iterator 的转换函数充其量是不寻常的。

关于c++ - 转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3483639/

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