- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一些预定义的类
class x
{
int y;
} xx;
class z
{
int y;
} zebra;
我想根据几个条件将 xx
或 zebra
传递给函数
function(x xx) or function(z zebra)
由于 "function"
的功能对于以上两者都是相同的,我如何编写一个可以同时使用 xx
和 zebra
。我不允许重新定义或声明类
最佳答案
如果你需要类似的东西
void add3(x xx)
{
xx.y += 3;
}
要可用于 z
类,最好使用模板函数:
template<typename T>
void add3(T value)
{
value.y += 3;
}
另一种选择是使用重载并定义两个函数:
void add3(x xx)
{
xx.y += 3;
}
void add3(z zebra)
{
zebra.y += 3;
}
当 x
和 z
这两个类在抽象上应该不同时,重载可能是更好的主意。
如果它们的抽象相同,它们应该基于共享接口(interface)(例如 base
和 y
字段以及 x
, z
应该继承 base
然后你就只有 void add3(base b)
)。您可以在 std::ios
( http://www.cplusplus.com/reference/ios/ ) 中看到这方面的示例,其中输入和输出 (std::istream
, std::ostream
) 都是流,但在实际使用时它们提供的功能截然不同。
另一方面,许多 STL 容器没有这种接口(interface)模式,因此模板解决方案并不总是一个坏主意。这只是您的风格和使用的资源的问题。
关于c++ - 传递 C++ 的不同类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28474472/
所以我有这个 UltraTicTacToe 游戏,我正在用 HTML/CSS/JS 编码。它由表中表中的表组成。当您单击 X 或 O 时,我想要突出显示您应该进入的下一个 TicTacToe 牌 ta
Some text Some more text 如何让每个 .example 的 .whatever 包含其 .test 的内容? 例如,如果代码是这样的: Som
我是一名优秀的程序员,十分优秀!