gpt4 book ai didi

c++ - 在 C++ 中从标量到非标量的转换

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:11 25 4
gpt4 key购买 nike

下面的代码有什么问题?它在一些编译器中被编译;但在某些编译器中它会抛出一个错误,说:

conversion from scalar to non scalar

有人可以帮忙解决这个问题吗?


#include <iostream>
#include <set>

using namespace std;

class base
{
typedef std::set<int> Sectors;

class subclass
{
public:
class subclass2
{
private :
Sectors::const_iterator it;
public :
subclass2(Sectors::const_iterator& it);
};
subclass2 begin();

private:
Sectors _sectors;
};
};

base::subclass::subclass2 base::subclass::begin()
{
return this->_sectors.begin();
}

int main()
{
return 0;
}

最佳答案

问题是转换构造函数:

subclass2(Sectors::const_iterator& it);

通过采用可变的左值 引用,它不能被临时调用;它们只能绑定(bind)到 constrvalue 引用。这里的这一行就是这样做的:

return this->_sectors.begin();

修复方法是通过const 引用或值来获取参数。迭代器通常旨在成为适合按值传递的轻量级事物,所以我会这样做:

subclass2(Sectors::const_iterator it);

关于c++ - 在 C++ 中从标量到非标量的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16713811/

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