我在类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 ©); //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;
}
它给了我一个错误:非法使用此类型作为表达式。 谢谢你们!
答案 0 :(得分:5)
使用::
operator而不是.
访问静态,因此它应为Node::Create
答案 1 :(得分:1)
使用:
Node::create(1)
调用函数
答案 2 :(得分:1)
静态成员函数或静态数据成员只是整个类的一个副本,并且每个实例没有单独的副本。
因此,只能使用类名和::
运算符访问静态成员。
.
运算符仅与非静态成员或实例成员一起使用。