On line return CPMSifDlg::EncodeAndSend
Ik heb een fout:
Fout: een niet-statische lidreferentie moet relatief zijn aan een specifiek object.
Wat betekent het?
Antwoord 1, autoriteit 100%
EncodeAndSend
is 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-static
en moet daarom worden aangeroepen met een object van CPMSifDlg
. bijv.
CPMSifDlg obj;
return obj.EncodeAndSend(firstName, lastName, roomNumber, userId, userFirstName, userLastName);
Als EncodeAndSend
geen 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(...);
^^^^^^
};