簡體   English   中英

將非指針分配給指針? (在C ++中子類化指針類型?)

[英]Assigning a non-pointer to a pointer? (Subclassing a pointer type in C++?)

最近,我遇到了一些看起來像這樣的代碼:

Foo<SomeType> member;
...
void SomeFunc(Bar* bar);
...
SomeFunc(member);

而且我感到非常困惑。 有人可以解釋這里到底發生了什么嗎?

member如何成為有效的Bar*

Foo<SomeType>是否以某種方式子類化了指針類型?

這是模板的某些屬性嗎? 如果memberFoo而不是Foo<SomeType>是否還有可能?

會員如何成為有效的律師*?

一種可能性是Foo<SomeType>可轉換為Bar* 這可以通過在Foo<SomeType>中使用用戶定義的轉換運算符來實現。 但是我不認為這種操作返回的Bar指針有任何意義。 也許,如果Foo<SomeType>繼承了Bar並且轉換操作符返回this它,則它可能會做一些有意義的事情,但這將是多余且令人困惑的。

Foo是否以某種方式繼承了指針類型?

不可以。您不能繼承基本類型。 指針是基本類型。

這是模板的某些屬性嗎?

沒有。

如果member是Foo而不是Foo<SomeType>是否還有可能?

不能。類模板的實例是類。 Foo<SomeType>是一個類。 不是Foo 變量不能以模板作為類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM