gpt4 book ai didi

c++ - 我可以直接继承实现来满足 C++ 中的接口(interface)吗

转载 作者:太空狗 更新时间:2023-10-29 22:57:35 24 4
gpt4 key购买 nike

在C++中,如果我知道一个类将满足虚方法,是否可以修改下面的直接继承它?现在编译器说不完整的类型是不允许的。我可以写一个包装器,但有直接的方法吗?

#include <stack>

template<class T> class MyStack{
public:
virtual T pop()=0;
};

template<class T> class JobStack : public MyStack<T>, public std::stack<T>;

int main()
{
JobStack<int> a;
a.push(1);
a.pop(a);
}

最佳答案

首先:

template<class T> class JobStack : public MyStack<T>, public std::stack<T>{};

其次,回答您的问题:不,您不能。因为,正如其中一条评论所指出的,您继承了两个不同的类,这意味着您将拥有两个继承的 pop() 函数。您将不得不在派生类中实现 pop() 。如果您仍想使用 std::stack 中的实现,则只需在实现中调用它即可。

第三,当你尝试从 main 调用 pop() 时你可能仍然会得到一个错误,因为现在你的类有两个不同函数的名称冲突。如果出现此问题,我建议将 MyStack 中的函数重命名为 myPop() 或其他名称。

关于c++ - 我可以直接继承实现来满足 C++ 中的接口(interface)吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43618593/

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