我正在尝试制作一个简单的链表。一切都很好,然后突然间,一场大屠杀的错误。我不知道我改变了什么来打破我的代码。这是我的文件,它收到了一些错误:
#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)
答案 0 :(得分:4)
您在LinkedList.cpp中的某处有using namespace std;
,但在LinkedList.h中没有。这就是为什么在课堂定义中,当你写std::string
时,它不知道你指的是string
。
我建议停止使用using namespace std;
来避免此类问题。
答案 1 :(得分:3)
使用std::string
,而不只是string
。