Это объявление не имеет класса хранения или спецификатора типа в C ++

У меня есть несколько классов в моей программе.

А) Когда я создаю объект класса в другом классе, я не получаю никакой ошибки, но когда я использую объект для вызова функции, я получаю вышеуказанную ошибку.

Б) Также, если я создаю объект другого класса и вызываю функцию, использующую его в конструкторе моего класса, я не получаю никакой ошибки, как эта.

C) Функция Cout не работает в теле класса, кроме случаев, когда я помещаю в нее какую-либо функцию

D) Основной класс может сделать все это, и я не получаю никакой ошибки.

Было бы здорово скоро услышать. Заранее спасибо .

Ниже приведен код: это два класса в моем cpp. У меня нет проблем, кроме использования объекта после его создания. код слишком велик, чтобы быть размещенным. Все может быть сделано в основном, но не в других классах, почему?

 #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->
  };