簡體   English   中英

為什么我不能擁有某些私有成員函數?

[英]Why can't I have certain private member functions?

給定一個類,為什么我們可以實現某些私有成員函數,而不能實現其他私有成員函數? 例如,見下文:

header file:
class A
{
    ....
    struct B
    {
    ....
    }
    int f(); 
    B* g();
}

cpp file:
int A::f(){...} // will compile
B*  A::g(){...} // will not compile!

錯誤是“未知類型名稱‘B’”,但我的實際代碼有更多細節。

B*  A::g(){...}

BA之外不可見。

A::B*  A::g(){...}

這與私人成員無關。 由於BA內部聲明,它不在全局范圍內,因此您需要指定您所指的B

替代其他答案,您可以使用尾隨返回類型

auto A::g() -> B* {...}

A::g()之前,您必須使用A::B A::g()您可以簡單地使用B

暫無
暫無

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

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