繁体   English   中英

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

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

我的程序中有多个类。

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

这是个错误:

m.check(side);

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

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

Message m; 意味着Orderbook将包含名为m Message ,如果您稍后创建Orderbook

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

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

Orderbook o1;
o1.m.check(side)

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

您不能在类中调用函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM