為什么我可以在私人類型上使用汽車?我對下面的代碼編譯和運行(vc 2012&gcc4.7.2)感到驚訝。class Foo {
struct Bar { int i; };public:
Bar Baz() { return Bar(); }};int main() {
Foo f;
// Foo::Bar b = f.Baz(); // error
auto b = f.Baz(); // ok
std::cout << b.i;}這段代碼編譯得很好是正確的嗎?為什么這是正確的?為什么我可以用auto在私有類型上,而我不能使用它的名稱(如預(yù)期的那樣)?
1 回答

哆啦的時光機
TA貢獻1779條經(jīng)驗 獲得超6個贊
class A { class B { };public: typedef B BB;};void f() { A::BB x; // OK, typedef name A::BB is public A::B y; // access error, A::B is private}
- 1 回答
- 0 關(guān)注
- 458 瀏覽
添加回答
舉報
0/150
提交
取消