链接列表说;失踪了......但事实并非如此

时间:2015-03-01 03:30:46

标签: c++ visual-studio-2013 compilation identifier

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

#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();上面的行上错过了一个分号,或者它看起来......但显然我不是。确切的错误是:

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

但它被识别为字符串返回类型。

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

这一切看起来都不错,但在方法标题中,我收到以下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:&#39; LinkedList :: GetList&#39; :重新定义;不同的基本类型c:... \ linkedlist.cpp 28 1 ProjectName

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

有谁知道世界上发生了什么?我的IDE骗我! (Visual Studio Community 2013 Update 4)

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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