Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取错误LNK2019和错误LNK1120_C++_Error Handling - Fatal编程技术网

C++ 获取错误LNK2019和错误LNK1120

C++ 获取错误LNK2019和错误LNK1120,c++,error-handling,C++,Error Handling,我似乎不明白为什么我总是犯这两个错误。我认为我没有在htmlexicalsyntax.cpp中正确地引用getToken(br,track)函数,但我不确定如何修复它 这就是它给我的错误 1>HTMLlexicalSyntax.obj : error LNK2019: unresolved external symbol "enum Tokens::TokenType __cdecl getToken(class std::basic_istream<char,struct std:

我似乎不明白为什么我总是犯这两个错误。我认为我没有在htmlexicalsyntax.cpp中正确地引用getToken(br,track)函数,但我不确定如何修复它

这就是它给我的错误

1>HTMLlexicalSyntax.obj : error LNK2019: unresolved external symbol "enum Tokens::TokenType __cdecl getToken(class std::basic_istream<char,struct std::char_traits<char> > *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (?getToken@@YA?AW4TokenType@Tokens@@PAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@@Z) referenced in function _main

1>C:\Users\John\Documents\College\CS 280\FALL 2014\HTML LEXICAL SYNTAX\Debug\HTML LEXICAL SYNTAX.exe : fatal error LNK1120: 1 unresolved externals
GetTokens.cpp

#include <iostream>
#include <fstream>
#include <istream>
#include <ostream>
#include <string>
#include "TOKENS.h"

using namespace std;

void getToken(istream*br, string& lexeme){
}
#包括
#包括
#包括
#包括
#包括
#包括“TOKENS.h”
使用名称空间std;
void getToken(istream*br、字符串和词素){
}

getToken
标记的成员,因此定义它时需要告诉编译器您正在定义成员函数,而不是独立函数

在定义
getToken
函数的主文件中,将其定义为类的一部分,如下所示:

Tokens::TokenType Token::getToken(istream*br, string& lexeme){
虽然我不知道为什么当你有一个名为“GetTokens.cpp”的文件时,你会有这个。考虑把整个事情移到“GETtokEn.CPP”


在“GetTokens.cpp”中,您当前有返回void的函数的另一个定义。摆脱这一个,因为您只需要一个定义。

LNK2019是一个链接错误,是一个尚未确定的未解析符号。请编辑您的问题以包含编译输出,以便我们可以帮助您


你的IDE是Visual Studio,对吗?您需要编辑项目属性以指定源代码文件之间的依赖关系。未指定的依赖项会导致LNK2019链接错误。

John,感谢您加入StackOverflow。请出示一份声明,它将简化流程并鼓励人们帮助您。您有三个声明
getToken
,都是不同的。有一个类
Tokens
的成员函数,返回
Tokens
。然后有一个非成员函数返回
Tokens::TokenType
。最后,还有一个非成员函数返回
void
。实际上,这三项中只有一项得到了实施。您真正想要的是哪种方式?@IgorTandetnik想要在我的头文件中声明getTokens,并在我的getTokens.cpp中定义它。您所说的
getTokens
是什么?如果有,它与
getToken
有什么关系?@IgorTandetnik我的错误我是说gettokenit仍然给我一个关于重载函数的错误。啊-我没有看到你对
getToken
的其他定义,我将编辑我的答案。谢谢,这实际上是我最后做的。是的,我的IDE是Visual Studio。我该怎么做呢?
Tokens::TokenType getToken(istream*br, string& lexeme);{
    while(br->good()){
        getline(*br, track);
        while (!looking){
            if(track == "/0"){
            looking = true;
            }

            else {
                spot = track.find("\n");
                if (spot == -1){
                    looking = true;
                    spot = track.length();
                }

                track = track.substr(0, spot);
                getToken(br, track);


            }

        }   

        }

}
#include <iostream>
#include <fstream>
#include <istream>
#include <ostream>
#include <string>
#include "TOKENS.h"

using namespace std;

void getToken(istream*br, string& lexeme){
}
Tokens::TokenType Token::getToken(istream*br, string& lexeme){