1

可能重复:
请求非类成员

所以我创建了一个 ADT,它是一个由节点组成的单链表。这些节点每个都有一个指向其中一个对象的指针,称为数据。

Class Structure
{
    private:
        struct Node
        {
            Object *data;
            Node *next;
        };
        Node *head;
};

我试图在对象中调用一个函数,如下所示:

head = new Node;
head -> data = new Object();
head -> next = NULL;

cout << head -> data.print();

我在编译时不断收到以下错误。

错误:在“head->Structure::Node::data”中请求成员“print”,它是非类类型“Object ”*

编辑:感谢您的快速回答,令人惊叹的社区。对我来说非常愚蠢的错误,我觉得自己像个傻瓜呵呵:P

4

3 回答 3

1

data是一个指针,也许你需要

cout << head -> data -> print();

? 或者,如果函数print自己打印,也许只是

head -> data -> print();
于 2012-11-02T22:56:23.477 回答
1

对于指针类型,您应该使用->而不是.访问成员或首先使用*取消引用指针然后使用.,所以您应该有cout << head->data->print()

于 2012-11-02T22:56:53.210 回答
0

您需要cout << head->data->print()而不是cout << head->data.print()不能使用点运算符从指针调用方法。

于 2012-11-02T22:58:24.030 回答