1

この単純なコードを Visual C++ 2012 で書いたとき、興味深いインテリセンス エラーが発生しました: 型の参照

"std::vector<Node*, std::allocator<Node*>> &" (non const-qualified)

タイプの値で初期化できません

"std::vector<Node*, std::allocator<Node*>>".

しかし、警告やエラーなしでコードを正常にビルドできます。では、なぜ Visual C++ 2012 はこのようなインテリセンス エラーを報告するのでしょうか?

#include <vector>

using std::vector;

class Node {
private:
    vector<Node*> children; 
public: 
    vector<Node*>& getChildren() {
        return children;
    }

    void addChild(Node* child) {
        children.push_back(child);
    }
};

void f(Node* root)
{
    vector<Node*>& tmp = root->getChildren(); // intellisense error on 'root' here
}

void main()
{
    Node root;
    Node child1, child2;
    root.addChild(&child1);
    root.addChild(&child2);
    f(&root);   
}
4

0 に答える 0