識別子 'Blog' が定義されていません

気が向いたらプログラムとかそのほかとかについてつらつらと書いていくブログです。

Error:”識別子’ ’が定義されていません”の対処法

Error:”識別子’ ’が定義されていません”の対処法

ひとつ前の投稿で書いた通り、識別子が定義されていないとエラーが出た時の解決法を書いていこうと思います。

なおC++を前提とします。

さて、まずは識別子とは何でしょう? 

  1. 変数の名前 

     例)int value; //valueが変数名

  2. クラス、構造体、または共有体

     例)class Blog {...};

  3. 列挙型の名前

     

     例) enum alph{a, b, c}; // alphは変数名、a, b, cが名前

  4. クラス、構造体、または共有体のメンバ

     例)class Blog {int value}; //valueは変数名でありメンバでもある

  5. 関数、またはメンバ関数

     例)void Blog {...}; //関数 注)メンバ関数=Method

  6. typedef名

     例)typedef unsigned int uint; //既に存在する変数などの型に別名を付ける

  7. ラベル名

     例)goto ERROR_1; //[名前]: がラベル ここではERROR_1

  8. マクロ名

     例)#define BLOG  void blog(int x, int y); // #defineでマクロを定義する、BLOGがマクロ

    詳しくはhttp://www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01028.html

  9. マクロパラメータ

     例)BLOG(blog);  //blogがパラメーター

    詳しくはhttp://www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01028.html

参考元:https://msdn.microsoft.com/ja-jp/library/565w213d.aspx 

これらの9種を識別子と呼びます。簡単に言ってしまえば、プログラマーがかってつけた名前のことです。

エラーが出るときは基本的にその識別子が事前に定義されていないときです。

  • 例)int x = 5, y = 1;

      z = x + y; //エラー

xとyは事前に宣言していますが、zは宣言されていません。なのでコンピュータは「こいつ何言ってんだ?」と混乱してエラーを出します。

 

または定義していてもタイプミスなどで異なった識別子名になっているときです。

  • 例)int value;

      cin >> Value; //エラー

 valueはvalueであってValueとは別物です。

コンピュータは人間ほど融通が利かないので、意図をくみ取ってくれません。

 

たまに識別子 'cin' が定義されていませんなどと出ることがあります。

僕も昔やりました。

cinだけでなくcoutだったりendl、中にはvectorが定義されていないといわれることもあります。

cin,cout,endlなどはC++の基本機能ですが、決して何もせずに使えるものではありません。

#include <iostream> 

 をすることによって外部で定義されたcinやcoutを使えるようになるのです。

 

または using namespace std; を書き忘れる、またはcin,coutの前に"std::"を書き忘れているなどの場合もあります。

詳しくはusing namespace std;の是非