1. ホーム
  2. c++

[解決済み] error : a nonstatic member reference must be relative to a specific object "はどういう意味ですか?

2022-03-02 06:53:59

質問

int CPMSifDlg::EncodeAndSend(char *firstName, char *lastName, char *roomNumber, char *userId, char *userFirstName, char *userLastName)
{
    ...

    return 1;
}

extern "C"
{
    __declspec(dllexport) int start(char *firstName, char *lastName, char *roomNumber, char *userId, char *userFirstName, char *userLastName)
    {
        return CPMSifDlg::EncodeAndSend(firstName, lastName, roomNumber, userId, userFirstName, userLastName);
    }
}

ライン上 return CPMSifDlg::EncodeAndSend エラーが発生しました。 Error : 非静的メンバ参照は、特定のオブジェクトに対する相対参照でなければなりません。

どういう意味ですか?

どのように解決するのですか?

EncodeAndSend は静的関数ではないので、クラスのインスタンスに対して呼び出すことができます。 CPMSifDlg . これは書けません。

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

むしろ、こう呼ぶべきでしょう。

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