错误:非法使用此类型作为表达式.C++

Error: illegal use of this type as an expression. C++

本文关键字:表达式 C++ 类型 非法 错误      更新时间:2023-10-16

我在类 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;
}

它给了我一个错误:非法使用这种类型的表达式。谢谢你们!

使用::运算符访问静态数据,而不是.因此应Node::Create

静态成员函数或静态数据成员只是整个类的一个副本,每个实例没有单独的副本。

因此,只能使用类名和::运算符访问静态成员。

.运算符仅与非静态成员或实例成员一起使用。

使用:

Node::create(1)

调用函数