error: 'const_iter' solution の前に期待されるネストされた名前指定子
2022-02-21 08:24:41
今日最初のブログ記事、これからブログを通じてもっと勉強します
今日遭遇したerror: expected nested-name-specifier before 'const_iter'のようなエラーについて
friend ostream & operator <<(ostream & out,const Array<T>&aa){
out<<"[";
typename const_iter it=aa.begin();
if(it!=aa.end()){
out<<*it;
if(it!=aa.end()){
for(;it<aa.end();it++)
out<<","<<<*it;
}
この部分のコンパイルエラーは
E:\iterm\A.h:56: error: expected nested-name-specifier before 'const_iter'
typename const_iter it=aa.begin();
^
テンプレート中のtypenameは無差別に使ってはいけないことが後で判明した。その目的は、該当するクラス型のイテレータの戻り値を示すことである。
<pre name="code" class="html">template<typename T>
class A_iterator{
public:
A_iterator(){
}//constructor
A_iterator(typename list<T>::iterator it){
this->it = it;
}//construtor with index
typename list<T>::iterator getIt() const{
return it;
}//function getIt
T& operator*(){
return *it;
}//overloading operator *
typename list<T>::iterator& operator++(){
++it;
return it;
}//overloading operator ++
typename list<T>::iterator operator++(int){
list<int>::iterator old = it;
it++;
return old;
}//overloding operator ++ in back sequnce
bool operator!=(const A_iterator& b){
return it!=b.getIt();
}//overloading operator ! =
bool operator==(const A_iterator& b){
return it==b.getIt();
}//overloding operator ==
private:
typename list<T>::iterator it;
};
このような形は、型と同じ型を返すこの型を表すクラスで使っているものです。
std::list<T> はインスタンス化される前にイテレータがメンバーなのか型なのかをコンパイラが判断する方法がないため、エラーになります。
std::list<T>::iterator の前に typename キーワードを追加するだけです。
関連
-
[解決済み] 1回線で複数の入力が可能
-
[解決済み] どうすれば修正できますか? libc++abi.dylib: terminating with uncaught exception of type std::invalid_argument: stoi: no conversion
-
[解決済み] 確率の異なる乱数【重複】について
-
[解決済み] *.h または *.hpp をクラス定義に使用します。
-
[解決済み] fpermissiveフラグにはどのような効果があるのですか?
-
[解決済み] ERROR: '::main' must return 'int' [duplicate].
-
[解決済み] プリプロセッサディレクティブに続く予期しないトークン - 改行が期待される
-
[解決済み] 依存するスコープ。前にtypenameが必要。
-
[解決済み] "Read Access Violation: This was nullptr" 正しく割り当てたはずなのに......?
-
[解決済み] whileループを停止させたい時に停止させることができない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】'std::cout'への未定義の参照
-
[解決済み】不明なオーバーライド指定子、型指定子の欠落
-
[解決済み】バイナリサーチツリーのデストラクタ
-
[解決済み】「warning: not all control paths return a value」ってどういう意味?(C++)
-
[解決済み】継承されたメンバが許されないのはなぜですか?
-
[解決済み] Qt: -lGL が見つからないエラー
-
[解決済み] このバイナリ・ノード・クラスのデストラクタを作成する適切な方法は何ですか?
-
[解決済み] c++のブーストシリアライズベクトル
-
[解決済み] CMAKE_C_FLAGSに付加する。