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