2016-05-23 6 views
3

値をフェッチし、そのタイプの自動を使用して推定される変数に割り当てる場合、コードが細かいコンパイル動作の違いプライベート構造体の明示指定タイプ対自動車を使用して

class BST 
{ 
    struct Node 
    { 
     int data_; 
     Node * left_, * right; 
    } * root_ = nullptr; 

    public: 

    Node * getRoot() 
    { 
     return root_; 
    } 
}; 

int main() { 
    BST bst; 
    auto root1 = bst.getRoot();   // Compiles fine 
    BST::Node * root2 = bst.getRoot(); // Gives error 
} 

次のコードスニペットを考えます。型を明示的に指定すると失敗します。なぜこの行動の違い?私は両方が失敗すると思った。

+0

エラーメッセージは何ですか? –

答えて

0

struct BST::Nodeclass BSTの中で私的であるという問題があります。 classは、インスタンスメンバーと機能だけでなく、すべてのメンバーのプライベートアクセスにデフォルト設定されています。

autoを使用すると、プライベートタイプが明示的に指定されていないため、問題はありません。

+2

私は、OPがなぜ最初のコードが問題なのかを知りたいと思うと思います。 – songyuanyao

+0

@songyuanyaoが編集しました – o11c

関連する問題