1. ホーム
  2. その他

[解決済み】この宣言は、C++でストレージクラスまたは型指定子を持っていない

2022-01-17 16:07:35

質問

プログラムに複数のクラスがあります。

A) あるクラスのオブジェクトを別のクラスで作成した場合、エラーは発生しませんが、そのオブジェクトを使って関数を呼び出すと、上記のようなエラーが発生します。

B)また、別のクラスのオブジェクトを作成し、私のクラスのコンストラクタでそれを使用して関数を呼び出すと、私はこのようなエラーは発生しません。

C) Cout関数は、任意の関数を置いたとき以外は、クラス本体で機能しません。

D) メインクラスはこれらすべてを行うことができ、何のエラーも発生していません。

すぐにお返事いただけると幸いです。よろしくお願いします。

以下は、コードです。これらは、私のcppの中の2つのクラスです。私はそれを作成した後、オブジェクトを使用することを除いて、何の問題も直面している。すべてがメインで行うことができますが、他のクラスでできないのはなぜですか?

 #include <iostream>
 #include <fstream>
 #include <iomanip>
 #include <string>
 #include <cstdlib> 
 #include <vector>
 #include <map>
 using namespace std;
 class Message
 {
    public:
    void check(string side)
   {
       if(side!="B"&&side!="S")
       {
           cout<<"Side should be either Buy (B) or Sell (S)"<<endl;;
       }
   }


};

class Orderbook
{
    public:
      string side;
      Orderbook()      //No Error if I define inside constructor
      Message m;       //No Error while declaring
      m.check(side);   //Error when I write m. or m->
};

解決方法は?

これは間違いです。

m.check(side);

そのコードは関数の中に入れなければなりません。 クラス定義は、宣言と関数しか含むことができません。

クラスは実行されるものではなく、オブジェクトの作り方の青写真を提供するものです。

ライン Message m; というのは Orderbook を含むことになります。 Message という m を作成した場合、後で Orderbook .