0

The C++ Programming Language 4e を読んでいます。デフォルト引数の部分で、以下のコードがわかりません。コンパイルしようとしましたが、エラーが発生しました。とにかく、Bjarneが説明しようとしているものは何ですか?
デフォルトの引数は、関数の宣言時に型チェックされ、呼び出し時に評価されます。例えば:

class X 
{
    public:
    static int def_arg;
    void f(int = def_arg);
// ...
};
int X::def_arg = 7;
void g(X& a)
{
    a.f(); // maybe f(7)
    a.def_arg = 9;
    a.f(); // f(9)
}

エラー:

unresolved external symbol "public: void __thiscall X::f(int)" (?f@X@@QAEXH@Z) referenced in function "void __cdecl g(class X &)" (?g@@YAXAAVX@@@Z)

マイクロソフト C++ 2013

4

1 に答える 1

1

宣言したばかりですfが、の本体を定義する必要がありますf:

void f(int = def_arg);

例えば

void X::f(int)
{
   // Do something
}

また

class X 
{
    // ...
    void f(int = def_arg)
    { 
        // Do something
    }
};

ライブコード。

于 2013-10-26T09:17:13.197 に答える