[英]I can't access my private data member and function in my operator functions
[英]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(){...}
B
在A
之外不可見。
A::B* A::g(){...}
這與私人成員無關。 由於B
在A
內部聲明,它不在全局范圍內,因此您需要指定您所指的B
。
替代其他答案,您可以使用尾隨返回類型
auto A::g() -> B* {...}
在A::g()
之前,您必須使用A::B
。 在A::g()
您可以簡單地使用B
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.