1. ホーム
  2. C++

エラー: "" から非スカラー型 "" への変換

2022-02-19 16:41:57

error: 'std::_List_const_iterator<_Mylist>' から非スカラー型 'std::_List_ iterator<_Mylist>' への変換が要求されました。

エラー C2440 を解決してください: "初期化": "std::_List_const_iterator<_Mylist>" から "std::_List_iterator<_Mylist>" に変換できません。

C++のコードを書くと、関数の入力としてconstを使うことが多く、その変数がSTL型であったり、STL型を含んでいたりすると、イテレータを使うときにそのように使うことが簡単にできます。

void list_print(const list
 &list)  
{  
    for (list
::iterator iter = list.begin();
         iter ! = list.end();
         ++iter) {
        ...    
     }
}  

この場合、次のようなエラーが報告されます。

error C2440: "Initialization": could not convert from "std::_List_const_iterator<_Mylist>" to "std: :_List_iterator<_Mylist>"
or
error: conversion from 'std::_List_const_iterator<_Mylist>' to non-scalar type 'std::_List_iterator<_Mylist>' requested

ここでは、リスト自体が const 型なので、list::const_iterator という const イテレータを使用する必要があります。

コードは次のようになります。

void list_print(const list
 &list)  
{  
    for (list
::const_iterator iter = list.begin();
         iter ! = list.end();
         ++iter) {
        ...    
     }
}   


いい加減にしろ