[c++] This declaration has no storage class or type specifier in C++

I have multiple classes in my program.

A) When I create an object of a class in another class I am getting no error but when I use the object to call a function I get the above error.

B)Also if I create an object of another class and call a function using that in the constructor of my class then I get no error like this.

C) Cout function does not work in the body of the class except when I put it any function

D) The main class is able to do all of these and I am not getting any error.

It would be great to hear back soon. Thank you in advance.

Following is the code : These are two classes in my cpp. I am facing no problems except using object after creating it. the code is too huge too be posted. Everything can be done in main but not in other classes why?

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

This question is related to c++

The answer is


This is a mistake:

m.check(side);

That code has to go inside a function. Your class definition can only contain declarations and functions.

Classes don't "run", they provide a blueprint for how to make an object.

The line Message m; means that an Orderbook will contain Message called m, if you later create an Orderbook.


You can declare an object of a class in another Class,that's possible but you cant initialize that object. For that you need to do something like this :--> (inside main)

Orderbook o1;
o1.m.check(side)

but that would be unnecessary. Keeping things short :-

You can't call functions inside a Class


Calling m.check(side), meaning you are running actual code, but you can't run code outside main() - you can only define variables. In C++, code can only appear inside function bodies or in variable initializes.