gpt4 book ai didi

c++ - 在模板函数中提示祖先类型

转载 作者:行者123 更新时间:2023-11-30 03:30:24 25 4
gpt4 key购买 nike

假设我有一个祖先类,Component和多个派生类,ComponentA , ComponentB

现在,我为组件编写了一个几乎相同的函数 A, B, C, ... .所以我有一堆几乎相同的功能(类型提示/声明除外)。

接下来,我使用模板重新实现函数,template <class T> ... .

这个新功能适用于所有组件。但它不会向用户传达它实际上只与 Components 兼容的信息。 .

我如何指定一个稍微通用的函数,以便它接受 Component 的所有对象就继承而言是祖先吗?

最佳答案

How do I specify a slightly generic function, such that it accepts all objects for which Component is an ancestor in terms of inheritance?

您可以使用 static_assertstd::is_base_of .

例子:

#include <type_traits>

class Component {};

class ComponentA : Component {};

class ComponentB : Component {};

template <typename T>
void foo()
{
static_assert(std::is_base_of<Component, T>::value, "Need a sub-type of Component");
}

int main()
{
foo<ComponentA>(); // OK
foo<ComponentB>(); // OK
foo<int>(); // Not OK
}

关于c++ - 在模板函数中提示祖先类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45022847/

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