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

时间:2014-04-06 20:17:30

标签: c++

我的程序中有多个类。

A)当我在另一个类中创建一个类的对象时,我没有错误,但是当我使用该对象调用一个函数时,我得到了上面的错误。

B)另外如果我创建另一个类的对象并在我的类的构造函数中使用它调用一个函数,那么我不会得到这样的错误。

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

3 个答案:

答案 0 :(得分:11)

这是一个错误:

m.check(side);

该代码必须进入函数内部。 您的类定义只能包含声明和函数。

类不“运行”,它们提供了如何制作对象的蓝图。

Message m;表示如果您稍后创建Orderbook,则Message将包含名为m的{​​{1}}。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您可以在另一个Class中声明一个类的对象,这是可能的,但是您无法初始化该对象。为此,您需要执行以下操作:-> (在main内部)

Orderbook o1;
o1.m.check(side)

但这是不必要的。简短:-

您不能在类内调用函数