Вопрос по c++ – Это объявление не имеет класса хранения или спецификатора типа в C ++

9

У меня есть несколько классов в моей программе.

А) Когда я создаю объект класса в другом классе, я не получаю никакой ошибки, но когда я использую объект для вызова функции, я получаю вышеуказанную ошибку.

Б) Также, если я создаю объект другого класса и вызываю функцию, использующую его в конструкторе моего класса, я не получаю никакой ошибки, как эта.

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->
  };
@jrok Кажется, вы можете помочь мне сейчас Jain
Я отредактировал и предоставил дополнительную информацию. Можете ли вы рассказать мне о многих ошибках, которые вы видите? Jain
Похоже, вы кладетевыражения где толькодекларации может появиться. Было бы намного проще помочь, если бы вы показали нам свой код ... jrok
Этот код неверен во многих отношениях, я бы просто сказал вам узнать больше о программировании на C ++, прежде чем пытаться достичь чего-то подобного. Я правильно отступил в вашем коде. Chnossos
Пожалуйста, измените стиль отступа кода для большей согласованности. Этоusing namespace std; где-то выше? Два класса находятся внутри заголовка или cpp? Какие заголовочные файлы включены? CPlusPlus OOA and D

Ваш Ответ

2   ответа
1

что вы выполняете реальный код, но вы не можете запустить код вне main () - вы можете только определять переменные. В C ++ код может появляться только внутри тел функций или при инициализации переменных.

Вы можете просто запустить код вне main, если это функция, которая инициализирует статическую переменную. StoryTeller
11

Это ошибка:

m.check(side);

Этот код должен идти внутри функции. Ваше определение класса может содержать только объявления и функции.

Классы не «бегают», они дают план того, как сделать объект.

ЛинияMessage m; означает, чтоOrderbook будет содержатьMessage называетсяm, если вы позже создадитеOrderbook.

Огромное спасибо . Я вызывал функцию в определении класса. Он работает нормально, де-функция. Jain
s/Classes don't "run"/Class declarations don't "run"/ jterrace

Похожие вопросы