此声明在C++中没有存储类或类型说明符

nkhmeac6  于 2023-02-14  发布在  其他
关注(0)|答案(3)|浏览(178)

我的程序中有多个类。
A)当我在另一个类中创建一个类的对象时,我没有得到任何错误,但当我使用该对象调用一个函数时,我得到了上述错误。
B)同样如果我创建了另一个类的对象,并在我的类的构造函数中调用了一个函数,那么我不会得到这样的错误。
C)Cout函数在类体中不起作用,除非我将其放入任何函数
D)主类能够完成所有这些操作,我没有得到任何错误。
很快就能收到回复真是太好了。先谢谢你。
代码如下:这是我的cpp中的两个类。我没有遇到任何问题,除了在创建对象后使用它。代码太大了,无法发布。所有的事情都可以在main中完成,但为什么不能在其他类中?

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

qmelpv7a1#

这是一个错误:

m.check(side);

代码必须在函数内部。类定义只能包含声明和函数。
类并不“运行”,它们提供了一个如何创建对象的蓝图。
Message m;意味着如果您以后创建一个Orderbook,则Orderbook将包含名为mMessage

w1jd8yoj

w1jd8yoj2#

调用m.check(side),意味着你正在运行实际的代码,但是你不能运行main()之外的代码--你只能定义变量。在C++中,代码只能出现在函数体或变量初始化中。

azpvetkf

azpvetkf3#

你可以在另一个类中声明一个类的对象,这是可能的,但是你不能初始化那个对象。为此你需要做如下的事情:--〉(inside main)

Orderbook o1;
o1.m.check(side)

但那是不必要的。长话短说

不能调用类内的函数

相关问题