gpt4 book ai didi

c++ - 非静态成员作为 C++ 中的默认参数

转载 作者:IT老高 更新时间:2023-10-28 22:26:16 25 4
gpt4 key购买 nike

我正在重构大量代码,我必须向许多函数添加一个额外的参数,这些函数将始终具有该对象成员的值。类似的东西

class MyClass
{
public:
CMyObject A,B;

void MyFunc(CMyObject &Object);
// used to be void MyFunc();
};

现在,我真的很想阅读它

class MyClass
{
public:
CMyObject A,B;

void MyFunc(CMyObject &Object = A);
};

但是我不允许有一个非静态成员的默认参数。我已阅读 this similar question这表明这是不可能的,但我想知道是否有任何合理的解决方法。原因是 95% 的时间将使用默认参数,因此使用默认参数将大大减少我必须更改的代码量。到目前为止,我最好的解决方案是这样的;

class MyClass
{
public:
CMyObject A,B;

void MyFunc(BOOL IsA = TRUE);
};

void MyClass::MyFunc(BOOL IsA)
{
CMyObject &Object = A;
if (!IsA)
Object = &B;
}

这不是优雅的,但是有没有更好的方法来做到这一点,我错过了?

编辑: FWIW,额外参数的原因是从相关对象中外部化一些与状态相关的成员以帮助多线程。

最佳答案

怎么样:

class MyClass
{
public:
CMyObject A,B;

void MyFunc()
{
MyFunc(A);
}
void MyFunc(CMyObject &Object);
};

?

关于c++ - 非静态成员作为 C++ 中的默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2296106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com