gpt4 book ai didi

c++ - 带有额外默认参数的接口(interface)实现?

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:55 24 4
gpt4 key购买 nike

我有一个关于在 C++ 中实现接口(interface)的问题:

假设有一个接口(interface):

class A
{
virtual void f() = 0;
};

在实现这个的时候,我想知道是否有办法做这样的事情:

class B : public A {     
void f(int arg=0) {....} // unfortunately it does not implement f() this way
};

我想保持界面干净。当客户端代码通过公共(public)接口(interface) A 调用时,arg 始终自动设置为 0。但是,当我通过 B 调用它时,我可以灵活地调用它并将 arg 设置为一些不同的值。可以实现吗?

编辑:由于我控制界面和实现,所以我愿意接受任何建议、宏、模板、仿函数或任何其他有意义的东西。我只想拥有一个最小且干净的代码库。这个类(class)很大,我不想写任何不是绝对必要的代码 - 例如另一个简单地转发到实际实现的功能。

EDIT2:只是想澄清一点:公共(public)接口(interface)是提供给客户端的。它比仅在内部使用的 B 类接口(interface)限制更多。然而函数 f() 本质上做同样的事情,除了基于输入 arg 的细微差别处理。真实类的接口(interface)函数比较多,签名比较复杂。快速进行函数转发会导致繁琐的代码重复,并且会污染 B 的内部接口(interface)。我想知道在 C++ 中处理这个问题的最佳方法是什么。

谢谢!

最佳答案

是的,只做两个独立的函数:

class B : public A {     
void f() { return f(0); }
void f(int arg) { .... }
};

关于c++ - 带有额外默认参数的接口(interface)实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675383/

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