當從派生類實體中呼叫基類模板函式時,是否有辦法避免投射?假設如下:
class Foo
{
public:
virtual void quux()= 0;
template <class T> void quux() { . .. }
};
class Bar : public Foo
{
public:
void quux() override<}。
};
然后再來看看類Bar的用法:
Bar bar。
bar.quux<int>(); / error: type 'int' unexpected。
static_cast<Foo&>(bar).quux<int>(); // ok
有什么方法可以讓這個問題不那么令人厭惡,讓函式quux可以在Bar的實體上呼叫,而不必在Bar實作中直接重復函式簽名?我知道從屬名稱的查找,但我想尋找一種可維護的方法來解決所有派生類的問題。
uj5u.com熱心網友回復:
只要添加使用Foo::quux;:
class Bar : public Foo
{
public:
using Foo::quux;
void quux() override{}。
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/329613.html
標籤:
上一篇:run.bat的標題
下一篇:變數沒有被更新,功能重復
