[英]Error C++ : ‘const_iterator’ does not name a type;
我有一個名為 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
存在。 易於監督。
因為Nuage<T>::const_iterator
是依賴名稱,所以需要typename
關鍵字。 編譯器需要被告知這個表達式是一種類型,而不是靜態變量或函數或類中的其他東西。
const_iterator
僅存在於某些 T 的Nuage
實例化范圍內。您有兩種選擇來修復您的代碼。 添加顯式Nuage<T>::
:
template <typename T>
typename Nuage<T>::const_iterator Nuage<T>::begin() const{
return v.begin();
}
或使用后綴返回類型表示法:
template <typename T>
auto Nuage<T>::begin() -> const_iterator const{
return v.begin();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.