2014-11-20 2 views
1

C++을 시작하려고하는데이 오류가 계속 발생합니다. 내 코드의 어느 부분에서 생성되는지는 알지만 최소한이 부분은 생성하지 않아야한다고 생각합니다."오류 LNK2019 : 해결되지 않은 외부 기호 ..."

클래스와 비슷한 방식으로 작동하는 Text이라는 클래스를 만들고 있는데, 이는 가치 의미를 더 잘 이해하고 이해하기위한 것입니다.

어쨌든,이 내 파일은 다음과 같습니다

Text.h :

#ifndef TEXT 
#define TEXT 

class Text { 
    public: 
     Text(const char *str); 
     Text(const Text& other); 
     void operator=(const Text& other); 
     ~Text(); 

    private: 
     int size; 
     char* cptr;   
}; 

#endif 

Text.cpp :

#include "Text.h" 
#include <cstring> 
#include <iostream> 
using namespace std; 

Text::Text(const char* str) { 
    size = strlen(str) + 1; 
    cptr = new char[size]; 
    strcpy(cptr, str); 
} 

Text::Text(const Text& other) { 
    size = other.size; 
    cptr = new char[size]; 
    strcpy(cptr, str); 
} 

void Text::operator=(const Text& other){ 
    delete [] cptr; 
    size = other.size; 
    cptr = new char[size]; 
    strcpy(cptr, other.ctpr); 
} 

Text::~Text() { 
    delete [] cptr; 
} 

하여 Main.cpp :

#include <iostream> 
#include "Text.h" 
using namespace std; 

Text funk(Text t) { 
    // ... 
    return t; 
} 

int main() { 
    Text name("Mark"); 
    Text name2("Knopfler"); 
    name = funk(name); 

    name = name2; 

    return 0; 
} 

그래서 무슨 일이 있어요 그 원인은 오류입니다. funkmain 함수의 처음 두 줄 main 함수의 처음 두 줄에 불평하는 이유는 "name"또는 "name2"라는 함수가 없기 때문입니다. 하지만 내가 뭘 하려는지 선언하고 한 줄에있는 개체를 초기화 (나는 오래된 Java 사람 : 피), 심지어 C에서 가능한 + +? 나는 이것을 가리키는 온라인을 찾을 수 없다.

재미있는 점은이 코드는 강사가 강의하는 동안 일부 코드에서 복사된다는 것입니다. 그리고 그는 "name"과 "name2"라는 함수를 선언하지 않았습니다. 이것에 대한 합당한 설명이 있습니까?

그러나이 기능을 사용하면 funk 오류가 발생하는 이유는 무엇입니까? 내가하고있는 일은 내가 보내고있는 물건의 사본을 반환하는 것이다.

미리 감사드립니다!

편집 : 다음은 전체 오류 메시지입니다. 그들 중 다섯 명이 있습니다. "SecondApplication"은 내 프로젝트의 이름입니다.

오류 1 오류 LNK2019 : 확인되지 않은 외부 기호 "공공 : __thiscall 텍스트 : 텍스트 (문자의 CONST *)"기능 _main의 C에서 참조 (?? 0Text @@ QAE @ PBD @ Z) : 사용자 \ \ XXX \ 비주얼 스튜디오 2013 \ 문서 프로젝트 \ \ SecondApplication \ SecondApplication.obj SecondApplication


오류 2 오류 LNK2019 : 확인되지 않은 외부 기호 "공공 : __thiscall 텍스트 : 텍스트 (클래스 텍스트 CONST &)"(클래스 텍스트 __cdecl 펑크 (클래스 텍스트) "(펑크 @@ YA? AVText) 함수에서 참조되는"?? 0Text @@ QAE @ ABV0 @@ Z " @@ V1 @@ Z) C : 사용자 \ \ XXX \ 비주얼 스튜디오 2013 \ 문서 프로젝트 \ \ SecondApplication \ SecondApplication.obj SecondApplication


오류 3 오류 LNK2019 : 확인되지 않은 외부 기호 "공공 : 함수 _main C : \ Users \ XXX \ Documents \ Visual Studio 2013 \ Projects \ SecondApplication \ SecondApplication에서 참조되는 void __thiscall Text :: operator = (클래스 텍스트 const &) "(?? 4Text @@ QAEXABV0 @@ Z)OBJ SecondApplication


오류 4 오류 LNK2019 : 확인되지 않은 외부 기호 "공공 : __thiscall 텍스트 :: ~ 텍스트 (무효)"(?? 1Text @@ QAE @ XZ) 함수에서 참조 "클래스 텍스트 __cdecl 펑크 (클래스 텍스트) "C (펑크 @@ YA AVText @@ V1 @@ Z?) : \ 사용자 \ XXX \ 비주얼 스튜디오 2013 \ 문서 프로젝트 \ \ SecondApplication \ SecondApplication.obj SecondApplication


오류 5 오류 LNK1120 : 4 개 확인되지 않은 외부 C : 사용자 \ \ XXX \ 비주얼 스튜디오 2013 \ 문서 프로젝트 \ \ SecondApplication \ 디버그 \ SecondApplication.exe 1 일 SecondApplication

+0

'name'과'name2'는 변수가 아니라 함수입니다. Thy는 C++에서 일반적인 것처럼 한 줄로 선언되고 초기화됩니다. 오류 메시지가 존재한다고 만 말하는 것이 아니라 전체 오류 메시지를 게시해야합니다. – molbdnilo

+0

이 사이트에서 "LNK2019"를 검색해보십시오. 이 질문은 동일한 원인으로 하루에 열 번 정도 질문합니다. – molbdnilo

+0

그래, 거기에 그들 중 많은 있습니다. 그리고 내가 볼 수있는 한, 그들 중 대부분은 대답으로 표시되지 않았습니다. 나는 stackoverflow에 대한 주제에 대한 처음 30 스레드에서 제안 된 솔루션을 시도하고, 그들 중 누구도 슬프게도 일했다. 내 코드에 아무런 문제가 없습니까? 사이드 노트에도. 이 오류는 여러 가지 사물로 인해 발생할 수 있습니다. 하나의 패턴은 정적 변수를 사용하는 사람들 이었지만, 나는 그 중 하나도 가지고 있지 않습니다. 그리고 사람들은 헤더 파일에 선언 된 기능을 정의하는 것을 잊어 버렸습니다. 그러나 나는 그 일을하지 않았다. –

답변

1

당신은 링크 오류 (안 컴파일 에러를) 얻을 것이다 당신을 예를 들어, 프로젝트에 "Text.cpp"를 추가하는 것을 잊어 버려서 컴파일 및 링크되지 않도록하십시오.

코드에 두 개의 오류가 있습니다. 하나는 복사 생성자에 있고 다른 하나는 할당 연산자에 있습니다.

컴파일러에서이 두 가지 오류에 대해 불평하지 않았으므로 파일을 프로젝트에 추가하는 것을 잊어 버린 것 같습니다.

관련 문제