簡體   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