gpt4 book ai didi

c++ - C++ 中的继承和模板

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

我在继承和模板方面遇到以下问题:

class Base {};
class Deriv : public Base {};

template <class T> class X{};

void f(X<Base>& inst) {}

int main()
{
X<Base> xb;
f(xb);
X<Deriv> xd;
f(xd);
return 0;
}

程序无法编译,因为 X<Base> 之间没有关系和 X<Deriv> .尽管如此,我认为应该可以做所有可以用 X<Base> 完成的事情。还有 X<Deriv> .除了复制 f 的函数体之外,我还能做些什么吗?到新功能void g(X<Deriv>& inst)

最佳答案

您可以继续使用模板:

template<class T>
void f(X<T>& inst) {}

将同时适用于 X<Base>X<Derived> .

编译器可能复制代码(如果它不够智能),但您不必这样做。

关于c++ - C++ 中的继承和模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10045827/

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