0
4

2 に答える 2

2

verticesおよびedgesはコンストラクター内のローカル変数であり、同じ名前のインスタンス変数をシャドウします。インスタンス変数を空のハッシュ テーブルに初期化するには、コンストラクターからそれらの変数を削除するだけです。

Markovgraph::Markovgraph() {
    // note: no declarations of vertices and edges here
    vertices.set_empty_key(NULL);
    edges.set_empty_key(NULL);

    vertices["a"] = 10000;
    vertices["b"] = 573;
    std::cout << vertices["a"] << std::endl;
    std::cout << vertices["b"] << std::endl;
    std::cout << vertices.size() << std::endl;
}

これが機能するのは、コンストラクターがインスタンス変数の既定のコンストラクターを暗黙的に呼び出すためです。

于 2013-10-10T14:05:37.330 に答える