在我们已经包含LinkedList.h之后,为什么需要LinkedList :: List * LinkedList :: getMiddleNode()?据我了解,include应该导入所有文件变量(即struct List)和声明。

这是头文件。

class LinkedList{

private:
    struct List {
        int num;

        List* next;
    };
    List* head;

public:
    ...
    ...
    List* getMiddleNode();
};


现在这是CPP文件。

#include <iostream>
#include "LinkedList.h"

LinkedList::List* LinkedList::getMiddleNode() {
    ...
    ...
    return node;
}

最佳答案

在我们已经包含LinkedList.h之后,为什么需要LinkedList :: List * LinkedList :: getMiddleNode()?


因为编译器需要知道您要定义的是类LinkedList的方法,而不是独立的函数。没有人会阻止您声明/定义独立函数以及类似这样的方法:

class LinkedList {
public:
    LinkedList::List* LinkedList::getMiddleNode();
    ...
};

LinkedList::List* getMiddleNode();


您如何告诉编译器是哪一个?

关于c++ - 为什么在CPP文件中需要范围解析运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41667039/

10-12 07:33