gpt4 book ai didi

c++ - 如何正确实现与基类不同的版本?

转载 作者:行者123 更新时间:2023-12-02 10:13:31 24 4
gpt4 key购买 nike

我正在尝试实现一个从Base(让我们说)继承的类。但是有一个问题,Base确实有一个声明如下的类:

template<typename It> void getInfo(It begin, It end);
但是在第二个类 Inh中,我得出结论,采用2个迭代器的该类版本不是最好的,因此我决定必须这样:
templtate<typename T> void getInfo(size_t where, const T& initial_value);//The class itself is a template that gets "T"
并且从不应该使用从 Base继承的版本,因此我决定:
template<typename It> void getInfo(It begin, It end) = delete;
但是您可以猜测,当您使用 Ihn作为类型使用 int类时,如下所示:
Ihn<int> obj;
obj.getInfo(5, 1000);//Trying to get the deleted function!
因为5和1000是同一类型,而不是 size_t,所以它调用了Deleted函数。您对如何执行此操作有任何想法吗?

最佳答案

实际上,您不需要将getInfo标记为delete。如果您在派生类中声明另一个getInfo,它将对基类隐藏一个。然后

Ihn<int> obj;
obj.getInfo(5, 1000); // would always try to call getInfo in the derived class
而且您仍然可以像这样明确地调用基本版本
obj.Base::getInfo(...);

关于c++ - 如何正确实现与基类不同的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62687568/

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