定义静态成员的默认参数
Default Arguments defining static member
我正在阅读C++编程语言4e。在默认参数部分,我不明白下面的代码。我尝试编译,但有一个错误。无论如何,比亚恩想解释什么?
默认参数在函数声明时进行类型检查,并在通话时间。例如:
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
}
};
实时代码。
相关文章:
- 使函数参数默认为周围范围
- 如何将值传递给其参数(默认参数)
- 当“std::make_index_sequence”和“std::index_sequence”用于模板参数默认类型时
- C ,构造器中允许的参考参数默认值
- 哪些规则控制参数默认赋值?
- 错误:上一个规范后给出的参数默认参数
- 是否可以设计一个包含模板参数默认值的类
- 构造函数中参数C++默认值
- 如何设置依赖于其他参数的参数默认值
- C++模板参数默认函数实现
- QInput对话框参数默认值
- g++4.8.2上列表方法参数默认初始化时出错
- 在函数定义中指定参数默认值会导致错误 C2143:语法错误:'='之前缺少')'
- 函数模板:将第一个模板参数默认为第二个
- 模板模板参数默认可以引用其他模板类型的参数
- 参数默认为先例参数的值
- 如何修改一个类,使它只有一个成员函数,所有参数默认
- 内置类型的模板参数默认值
- 是否可以使用构造函数或对象作为其他类方法的参数默认值?
- 模板参数默认为更高版本