я m чтение C++ Язык программирования 4e. В части аргумента по умолчанию я не понимаю ниже кода. Я пытаюсь скомпилировать, но есть ошибка. Во всяком случае, что Бьярн пытается объяснить?
По умолчанию аргумент type проверяется во время объявления функции и оценивается во время вызова. Например:
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)
MS C++ 2013
Вы только что объявили f
но вам нужно определить тело f
:
void f(int = def_arg);
Например
void X::f(int)
{
// Do something
}
или
class X
{
// ...
void f(int = def_arg)
{
// Do something
}
};