gpt4 book ai didi

c++ - 子类作为特化 - 即 : adding a method in the specialization

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

我想为模板的特化添加一个额外的转换运算符

-特化能否继承其主模板的所有方法?

template<class T>
MyClass
{
public:
operator Foo() { return(getAFoo()); }
};


template<>
MyClass<Bar>
{
public:
// desire to ADD a method to a specialization yet inherit
// all methods from the main template it specializes ???
operator Bar() { return(getABar()); }
};

最佳答案

模板特化是不同的类型,因此不共享函数。

您可以通过继承公共(public)基类来获得共享功能:

template<class T>
struct Base {
operator Foo() { return Foo(); }
};

template<class T>
struct C : Base<T> {
// ...
};

template<>
struct C<Bar> : Base<Bar> {
// ...
operator Bar() { return Bar(); }
};

关于c++ - 子类作为特化 - 即 : adding a method in the specialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2263856/

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