2

見落としていたのは本当に簡単なことだと確信していますが、このエラーメッセージに頭が下がります。フレンド機能はほとんど使いません。

error: 'LRESULT Window_Proc(HWND, UINT, WPARAM, LPARAM)' should have been declared inside '::'

これが私の定義です:

namespace rayc 
{
    class win32_window: public window {
    public:
        win32_window();
        ~win32_window();

        void show();
        void hide();
        void pump_message();

    private:
        friend LRESULT CALLBACK ::Window_Proc(HWND, UINT, WPARAM, LPARAM);

        void set_closed(bool);

        HWND hWin;
    };
}

このエラー メッセージの意味がよくわかりません。グローバル スコープに属すると定義されていますよね?!

MinGW-64 TDM でコンパイルします。

4

1 に答える 1

3

このエラー メッセージの意味がよくわかりません。グローバル スコープに属すると定義されていますよね?!

その宣言の前にグローバル名前空間に前方宣言を含めていない限り、そうではありませんfriend。宣言が新しいシンボルを導入する場合、friendそのシンボルは、それを含むクラスの外側の名前空間に配置されます。

追加してみる

LRESULT CALLBACK Window_Proc(HWND, UINT, WPARAM, LPARAM);

classを宣言する前に、グローバル名前空間で.

于 2012-06-09T20:47:23.387 に答える