[英]Override a non-virtual method in C++
我有一個A
類和一個從A
繼承的B
類。 A
有一個foo
方法,我想在B
覆蓋它。
class A {
public:
void foo();
...
}
class B: public A {
public:
void foo();
...
}
對此的解決方案當然是將A::foo()
定義為虛方法,將其聲明為virtual void foo();
. 但問題是我不能這樣做,因為A
類是在第三方庫中定義的,所以我寧願不更改其代碼。
經過一番搜索,我找到了override
關鍵字(因此B::foo
的聲明將是void foo() override;
),但這對我沒有幫助,因為這不是override
的用途, override
顯然只能使用以確保該方法確實覆蓋了另一個方法並且程序員沒有犯錯誤,並且如果該方法不是虛擬方法,則會生成錯誤。
我的問題是如何在不更改A
任何代碼但僅更改B
的代碼的情況下實現與使A::foo
虛擬相同的效果?
有點晚了。 但是您可以根據具體類型使用 std::variant 和委托方法給兩個類 A 和 B。
如果您的編譯器不是最新的,請改用標記聯合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.