标签:lock 分割线 方案 无法 记录 分析 val 多少 避免
这篇文章是用于记录博主在折腾C++过程中踩过的坑,现在记录下来和大家分享分享,避免大家重蹈覆辙哦 ^_^
测试环境:Vitual Studio 2017
------------------------------------------------------------这是一条优雅的分割线------------------------------------------------------------
测试代码:
class Class
{
public:
void func(int num = value) {}
private:
int value;
};
错误提示:
error C2648: “Class::value”: 将成员作为默认参数使用要求静态成员
note: 参见“Class::value”的声明
原因分析:
C++标准中不允许使用非静态数据成员作为成员函数的默认参数,原因是当编译器进行编译时,如果非静态成员在成员函数被调用之前没有被初始化,则编译器无法确定参数的默认值是多少
解决方案:
方案一:将默认参数改成一个废弃值,再在函数中进行判断修正
class Class
{
public:
void func(int num = INT_MIN)
{
if (num == INT_MIN)
num = value;
//...
}
private:
int value;
};
方案二:重载函数
class Class
{
public:
void func(int num) {/*这里使用用户传入的参数*/}
void func() {/*这里相当于使用默认参数,可以认为传入的参数为value*/}
private:
int value;
};
标签:lock 分割线 方案 无法 记录 分析 val 多少 避免
原文地址:https://www.cnblogs.com/wsmrzx/p/9740971.html