C++ 链表说;是不见了…但不是

C++ 链表说;是不见了…但不是,c++,visual-studio-2013,compilation,identifier,C++,Visual Studio 2013,Compilation,Identifier,我正在尝试制作一个简单的链表。一切都进行得很顺利,然后突然间,一场错误的大屠杀。我不知道是什么改变了我的密码。这是我的文件,其中有一些错误: #pragma once #include <string> #include "Node.h" class LinkedList { private: Node *head; public: LinkedList(); ~LinkedList(); void AddNode(int); strin

我正在尝试制作一个简单的链表。一切都进行得很顺利,然后突然间,一场错误的大屠杀。我不知道是什么改变了我的密码。这是我的文件,其中有一些错误:

#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);
};
该行的另一个错误是:

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()方法:

这一切看起来都很好,但在方法标题中,我得到了以下两个错误:

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项目名称

我甚至创建了一个新项目,复制并粘贴了我所有的文件,但没有效果。我以前在此程序中成功运行过GetList()


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

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

使用命名空间std位于LinkedList.cpp中的某个位置,但不在LinkedList.h中。这就是为什么在类定义中,当您编写
string
时,它不知道您在引用
std::string


我建议停止使用
名称空间std
以避免此类问题。

您是否尝试过改用
std::string
呢?太棒了!我不知道如果没有你的帮助,我怎么会明白(尽管它很简单)。可怕的错误消息。谢谢@Evorlo:错误消息实际上是有意义的。当编译器不知道
string
是什么类型时,就无法知道它是什么类型。你把它弄糊涂了,它无法读懂你的心思。您说函数具有“字符串返回类型”,但“字符串”不存在:它是“std::string”。编译器所能做的就是报告语法被破坏的方式。随着时间的推移,随着经验的积累,您将学会以编译器的方式思考,然后您将直观地理解这些消息。@LightnessRacesinOrbit感谢您的鼓励:-)和ya,这很有意义您建议每次使用std名称空间时键入std::是的,这是C++中推荐的方法。请参见更详细的说明。在我的main.cpp中?
使用名称空间std永远都不安全。当程序员无意中引用了不同的名称时(正如您刚才所做的那样),使用非限定名称总是会导致编程错误。引用名称空间std中前缀为
std::
的所有名称可以减少这些事故的数量。
string LinkedList::GetList(){
    string list;
    Node *currentNode = head;
    while (currentNode->next_node){
        currentNode = currentNode->next_node;
        list += currentNode->get_value() + " ";
    }
    return list;
}
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