gpt4 book ai didi

c++ - 双继承类型推导

转载 作者:行者123 更新时间:2023-12-03 07:52:22 26 4
gpt4 key购买 nike

我有以下模板类:

template<class T>
class Foo {
public:
void Bar(T* t) { member = t; }
private:
T* member;
};

这被用作(两次)作为不同类的基类:

class AwesomeClass : public Foo<ISomeInterface>, public Foo<IOtherInterface> {};

这就是这样的:

class Caller {
void Init(ISomeInterface * i) {
AwesomeClass a;
a.Bar(i);
}
}

但是这不会编译,表明对 Bar 的调用不明确。因此我需要使用a.Foo<ISomeInterface>::Bar(i) ,因为显然编译器无法确定要调用哪个 Bar (即使认为它被赋予了 ISomeInterface 对象)。有什么办法可以解决这个问题吗?

此外,我想知道继承是否是“正确”的方法,或者组合是否是更好的选择。

最佳答案

您可以将 Bar 引入到 AwesomeClass 中,然后两者都可以在 AwesomeClass 的范围内找到,然后重载解析开始。例如

class AwesomeClass : public Foo<ISomeInterface>, public Foo<IOtherInterface> {
public:
using Foo<ISomeInterface>::Bar;
using Foo<IOtherInterface>::Bar;
};

LIVE

关于c++ - 双继承类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76865321/

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