0

クラスNode内に静的メンバー関数を作成しましたが、引数を指定してその関数を呼び出したいと思います。メイン関数でその関数を呼び出すにはどうすればよいですか?

class Node;
typedef shared_ptr<Node> SharedNode;

class Node {
    Node* parent;
    vector< SharedNode > children;
    int value;

    //limiting construction
    Node(int a_value):value(a_value),parent(0){}
    Node(const Node &copy); //non-construction-copyable
    Node& operator=(const Node& copy); //non-copyable
public:
    static SharedNode create(int a_value){
        return SharedNode(new Node(a_value));
    }
    SharedNode addChild(SharedNode child){
        child->parent = this;
        children.push_back(child);    // First there is a typo here. (nodes.push_back     is incorrent)
        return child;
    }


int main(){

    SharedNode a1 = Node.create(1);
    SharedNode b1 = Node.create(11);
    SharedNode b2 = Node.create(12);
    SharedNode b3 = Node.create(13);
    SharedNode b21 = Node.create(221);
    a1.get()->addChild(b1);
    a1.get()->addChild(b2);
    a1.get()->addChild(b3);
    b2.get()->addChild(b21);
    b2.get()->getNode(221);


    int hold;
    cin>>hold;
}

エラーが発生します:この型を式として不正に使用しています。君たちありがとう!

4

3 に答える 3

5

:: 静的は演算子notを使用してアクセスされる.ため、そうする必要がありますNode::Create

于 2012-06-11T19:57:05.010 に答える
1

静的メンバー関数または静的データ メンバーは、クラス全体の 1 つのコピーに過ぎず、各インスタンスの個別のコピーではありません。

したがって、静的メンバーは、クラス名と::演算子でのみアクセスできます。

.演算子は、非静的メンバーまたはインスタンス メンバーでのみ使用されます。

于 2012-06-12T05:48:03.313 に答える
1

使用する:

Node::create(1)

関数を呼び出す

于 2012-06-11T19:56:53.603 に答える