链表说;不见了……但它不是
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;
以避免此类问题。
我正在尝试制作一个简单的链表。一切都很好,然后突然间,出现了一大堆错误。我不知道我改变了什么来破坏我的代码。这是我的文件,出现了一些错误:
#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;
以避免此类问题。