gpt4 book ai didi

c++ - 如何在C++中只在开头选择一次代码的算法?

转载 作者:行者123 更新时间:2023-12-05 09:02:44 25 4
gpt4 key购买 nike

整个代码中使用了两种不同的算法。选择哪一个是在运行时由参数(例如真或假)确定的。我不想每次出现算法时都使用 if 语句。

所以不用每次都写下面

if (parameter==true)
algorithmOne();
else
algorithmTwo();

我想在开头设置算法,比如

if (parameter==true)
algorithm()=algorithmOne();
else
algorithm()=algorithmTwo();

并且从现在开始只使用“algorithm()”。

如何在代码编译完成后根据参数选择最开始的算法?

编辑:你如何在类的构造函数中做到这一点(因为指向成员函数的指针不是常规指针)?由于这两种算法都依赖于该类的成员变量和函数,不方便派生新类。

解决方案:这可以通过虚函数和派生类来解决。

class Base
{
public:
Base();
virtual void algorithm() = 0;
~Base();
protected:
double d;
int i;
...
}

class DerivedOne : public Base
{
public:
DerivedOne() : Noise() {};
void algorithm() override;
~DerivedOne();
};

Base *b;

if (parameter==true)
{
b = new DerivedOne();
}
else
{
b = new DerivedTwo();
}

然后可以调用函数:

b->algorithm();

并删除:

delete b;

这可能不是最好的方法,但它似乎对我有用。查看答案和评论。

最佳答案

你快到了:

自动算法 = 参数 ?算法一:算法二

没有 (),您不是要在此处调用任何函数。

关于c++ - 如何在C++中只在开头选择一次代码的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70985164/

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