コンパイルエラー349

Compiler Error 349

No operator ... matches these operands

それらのオペランド(条件式左右の値)に対して最適なオペレーター(条件式)である...の使い方が存在しません.

Quote:

一般的にこのエラーは実現不可能なオペレーターの使い方をした場合に起こり得ます.

例えば一般定義されたクラスに対してビット条件式を用いた場合などです.

演算子や型の使い方があっているか確認して見て下さい.

#include "mbed.h"
Serial pc(D0,D1);
int main() {
    if(pc==1){//<--Serialクラスが1であるかと言う比較は不可能なのでこのエラーが発生します
    }
}

no operator "==" matches these operandsの一例

#include "mbed.h"
#include <string>
 
int main() {
    int a = 1;
    std::string b = "2";
    if (a == b) {        // <---- no operator "==" matches these operands
        a = 2;
    };
}

このプログラムはint型には,std::string型と等価演算(==)する方法が定義されていないため,正常に動作させることは出来ません. これらに対しては以下の2種類の解決法が有ります.

  • オペランドを等価演算可能な状態に変換します.この例の場合,stringをintに変換する処理を通せば変数として等価演算に掛けることが出来ます.
  • int型とstd::string型間で使用可能な等号演算子を外部から定義し,実装します.通常,非標準クラスが含まれるときに使われます.

エラー辞書に戻る


Please log in to post comments.