链表说;不见了……但它不是

Linked List says ; is missing...but its not

我正在尝试制作一个简单的链表。一切都很好,然后突然间,出现了一大堆错误。我不知道我改变了什么来破坏我的代码。这是我的文件,出现了一些错误:

#pragma once

#include <string>

#include "Node.h"

class LinkedList
{
private:
    Node *head;
public:
    LinkedList();
    ~LinkedList();
    void AddNode(int);
    string GetList();  //missing ';' before identifier 'GetList'
    bool Contains(int);
    void Remove(int);
};

它声称我在 string GetList(); 上方的行中遗漏了一个 semi-colon,或者看起来是这样......但显然我没有。确切的错误是:

Error   1   error C2146: syntax error : missing ';' before identifier 'GetList' c:\...\linkedlist.h 15  1   ProjectName

该行的另一个错误是:

Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\...\linkedlist.h 15  1   ProjectName

但是被识别为字符串return类型

在 LinkedList.cpp 中,这是 GetList() 方法:

string LinkedList::GetList(){
    string list;
    Node *currentNode = head;
    while (currentNode->next_node){
        currentNode = currentNode->next_node;
        list += currentNode->get_value() + " ";
    }
    return list;
}

那里看起来一切正常,但在方法 header 中,我收到以下 2 个错误:

Error   4   error C2556: 'std::string LinkedList::GetList(void)' : overloaded function differs only by return type from 'int LinkedList::GetList(void)' c:\...\linkedlist.cpp   28  1   ProjectName

错误 5 错误 C2371:'LinkedList::GetList':重新定义;不同的基本类型 c:...\linkedlist.cpp 28 1 ProjectName

我什至创建了一个新项目并将我的所有文件复制并粘贴回去,但这没有任何效果。我之前在这个程序中成功 运行 GetList()。

有人知道这里到底发生了什么吗?我的 IDE 在骗我! (Visual Studio 社区 2013 更新 4)

使用 std::string,而不仅仅是 string

您在 LinkedList.cpp 中的某处有 using namespace std;,但在 LinkedList.h 中没有。这就是为什么在 class 定义中它不知道你在写 string.

时指的是 std::string

我建议停止使用 using namespace std; 以避免此类问题。