wat betekent fout: een niet-statische lidreferentie moet relatief zijn aan een specifiek object ?

On line return CPMSifDlg::EncodeAndSendIk heb een fout:
Fout: een niet-statische lidreferentie moet relatief zijn aan een specifiek object.

Wat betekent het?


Antwoord 1, autoriteit 100%

EncodeAndSendis geen statische functie, wat betekent dat deze kan worden aangeroepen op een instantie van de klasse CPMSifDlg. Je kunt dit niet schrijven:

CPMSifDlg::EncodeAndSend(/*...*/);  //wrong - EncodeAndSend is not static

Het zou eerder moeten worden aangeroepen als:

CPMSifDlg dlg; //create instance, assuming it has default constructor!
 dlg.EncodeAndSend(/*...*/);   //correct 

Antwoord 2, autoriteit 17%

Alleen statische functies worden aangeroepen met klassenaam.

classname::Staicfunction();

Niet-statische functies moeten worden aangeroepen met objecten.

classname obj;
obj.Somefunction();

Dit is precies wat uw fout betekent. Aangezien uw functie niet statisch is, moet u een objectreferentie gebruiken om deze aan te roepen.


Antwoord 3, autoriteit 15%

De methode

CPMSifDlg::EncodeAndSend()wordt gedeclareerd als niet-staticen moet daarom worden aangeroepen met een object van CPMSifDlg. bijv.

CPMSifDlg obj;
return obj.EncodeAndSend(firstName, lastName, roomNumber, userId, userFirstName, userLastName);

Als EncodeAndSendgeen specifieke kenmerken van een object gebruikt/relateert (bijv. this), maar algemeen is voor de class CPMSifDlg, declareer het dan als static:

class CPMSifDlg {
...
  static int EncodeAndSend(...);
  ^^^^^^
};

Other episodes