Deze verklaring heeft geen opslagklasse of typeaanduiding in C++

Ik heb meerdere lessen in mijn programma.

A) Als ik een object van een klasse in een andere klasse maak, krijg ik geen foutmelding, maar als ik het object gebruik om een functie aan te roepen, krijg ik de bovenstaande foutmelding.

B)Ook als ik een object van een andere klasse maak en een functie aanroep met die in de constructor van mijn klasse, krijg ik geen foutmelding zoals deze.

C) Cout-functie werkt niet in de hoofdtekst van de klas, behalve wanneer ik het een functie geef

D) De hoofdklasse kan dit allemaal en ik krijg geen foutmelding.

Het zou leuk zijn om snel iets te horen. Bij voorbaat dank.

Hier volgt de code: Dit zijn twee klassen in mijn cpp. Ik heb geen problemen, behalve het gebruik van het object nadat ik het heb gemaakt. de code is te groot om te plaatsen. Alles kan in de hoofdklasse, maar niet in andere klassen, waarom?

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

Antwoord 1, autoriteit 100%

Dit is een fout:

m.check(side);

Die code moet in een functie passen.
Je klassendefinitie kan alleen declaraties en functies bevatten.

Klassen “lopen” niet, ze bieden een blauwdruk voor het maken van een object.

De regel Message m;betekent dat een OrderbookMessagemet de naam mzal bevatten, als u later een een Orderbook.


Antwoord 2, autoriteit 17%

M.check(side) aanroepen, wat betekent dat je daadwerkelijke code uitvoert, maar je kunt geen code uitvoeren buiten main() – je kunt alleen variabelen definiëren.
In C++ kan code alleen verschijnen in functieteksten of in variabele initialisaties.


Antwoord 3, autoriteit 4%

Je kunt een object van een klasse in een andere klasse declareren, dat is mogelijk, maar je kunt dat object niet initialiseren. Daarvoor moet je iets als dit doen:–>
(binnen hoofdmenu)

Orderbook o1;
o1.m.check(side)

maar dat zou niet nodig zijn. Houd het kort:-

Je kunt geen functies aanroepen binnen een klas

Other episodes