gpt4 book ai didi

c++ - 从 `Header*' 到非标量类型的转换`

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:25 26 4
gpt4 key购买 nike

任何人都可以用代码告诉问题

#include <iostream>
#include <vector>

using namespace std;

class Header
{
};


int main()
{
Header* _start;
vector<Header>::iterator it = _start;
return 0;
}

错误:

Header*' 到非标量类型的转换:

   __gnu_cxx::__normal_iterator<Header*, std::vector<Header,
std::allocator<Header> > >' requested

提前致谢

最佳答案

改变

vector<Header>::iterator it = _start;

vector<Header>::iterator it(_start);

编辑:问题是当您使用赋值时,编译器将其扩展为这样的代码:

vector<Header>::iterator it = static_cast<vector<Header>::iterator>(_start);

但是没有从指针到迭代器的隐式或显式类型转换。

另一方面,迭代器有一个可以使用的构造函数 T::iterator(const T *&)

编辑 2:混合使用指针(C 风格)和迭代器(C++ 风格)并不是什么好主意。当您使用容器(C++ 风格)而不是数组(C 风格)时,您不需要使用原始指针。容器提供了获取不同迭代器的方法。

例如,您应该使用 v.begin() + i 而不是 (T*)&v[i]

关于c++ - 从 `Header*' 到非标量类型的转换`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16807679/

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