错误C ++:'const_iterator'没有命名类型;

用户123

我有一个名为Nuage的类(它是Points的集合),在这里我将使用Vector类的功能来操纵该类。nuage.cpp文件是:

#include <iostream>
#include "nuage.hpp"


template <typename T>
Nuage<T>::Nuage(){}

template <typename T>
void Nuage<T>::ajouter(const T& p) {
    v.push_back(p);
}

template <typename T>
unsigned int Nuage<T>::size() const {
    return v.size();
}


template <typename T>
const_iterator Nuage<T>::begin() const{
    return v.begin();


template <typename T>
Nuage<T>::~Nuage(){}

nuage.hpp是:

#ifndef NUAGE_HPP
#define NUAGE_HPP
#include <cstdlib>
#include <sstream>
#include <vector>

template <typename T>    
class Nuage {

    private:
        std::vector<T> v;
    
    public:
        using const_iterator = typename std::vector<T>::const_iterator;
        Nuage();
        void ajouter(const T&);
        unsigned int size() const;
        const_iterator begin() const;
        ~Nuage();
};

#endif

我有一个错误说:

error: ‘const_iterator’ does not name a type; did you mean ‘constexpr’?

错误在这一行: const_iterator Nuage<T>::begin() const{

有人可以帮我找到它吗?谢谢

通知者

采用

template <typename T>
typename Nuage<T>::const_iterator Nuage<T>::begin() const{
    return v.begin();
}

当编译器处理您的.cpp文件时,您引用的类型const_iterator不存在。Nuage<T>::const_iterator存在。容易监督。

typename需要的关键字怎么一回事,因为Nuage<T>::const_iterator是一个从属名称。需要告诉编译器此表达式是类型,而不是静态变量或函数或类内的其他内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

导入错误:“没有命名模块” *存在*

map :: const_iterator映射类型不是const

const_iterator和iterator有什么区别?

自动它= vector.begin()结果类型不能转换为const_iterator

为什么在C ++ 11中允许通过const_iterator进行擦除?

C ++范围排序视图-如何创建const_iterator?

C ++ Rmask没有命名类型

从const_iterator类型的返回值到迭代器没有可行的转换

在C ++ 11标准中是否指定std :: begin(Container &&)返回const_iterator?

如何解决此错误“从const_iterator转换为非标量类型”?

在C ++ 17中实现迭代器和const_iterator的正确方法是什么?

错误C2676:std :: set :: const_iterator没有运算符+功能?

为什么我的for循环给出错误:X没有命名类型

“错误:尝试使用OpenCV和CUDA构建暗网时,'IplImage'没有命名类型?

X在C ++中没有命名类型

错误:类别...没有命名的字段或关联

'drawBox'没有命名类型错误

没有命名类型错误(使用全局类)

没有命名真正令人讨厌的类型错误

错误:预期为“;” 使用std :: vector <...> :: const_iterator无意义的编译错误?

Visual Studio const_iterator分配错误

错误:[类内的typedef]没有命名类型

语义错误:类实体没有命名的字段或关联

错误:'argument' 没有命名类型,假设 .cpp 和 .h 文件有问题

为什么我们在 C++ 标准中没有“const iterator”,而是 const_iterator?

是什么导致我的“命名空间‘泡沫’中的‘致命错误’没有命名类型”错误?

src/caffe/parallel.cpp:70:1: 错误:'Params' 没有命名类型

理解解引用的类型 - const_iterator

有没有办法将 local_iterator 转换为 const_iterator 或 iterator?