2017-12-15 4 views
1

그래서 난 그냥 클래스를 분리해서하는 방법을 배웠 원인과 유튜브 totourial 여기 https://www.youtube.com/watch?v=NTip15BHVZc&list=PLAE85DE8440AA6B83&index=15 내 코드는 자신과 완전히 동일 링크가있어,이을 많이 일을 강조하고, cpp가 파일을 theres이 일에 :는, CPP 파일에 함수를 사용하여 오류

unidentified reference to 'mainClass::myfunction()' 

여기 내 MAIN.CPP입니다 : 난 내 프로그램을 실행하려고 할 때 이 mainClass::myfunction; (mainclass 내 클래스의 이름이고, myFunction이 제 기능입니다) , 에러를 제공합니다 파일 코드 :

나는 그래서 그냥 여기에 오류가 무엇인지 말해 줄 수있는 이들에 대해 잘 모르는

#include "mainclass.h" 
#include <iostream> 

using namespace std; 

mainClass::myfunction() 
{ 
    cout << "I am a banana" << endl; 
} 

:

#ifndef MAINCLASS_H 
#define MAINCLASS_H 

class mainClass 
{ 
    public: 
     myfunction(); 
}; 

#endif // MAINCLASS_H 

내 mainclass.cpp이 :

여기 내 mainclass.h 코드입니다 왜냐하면 나는 그 남자의 totourial에서 모든 것을 올바르게 복사했기 때문에 여전히 작동하지 않는다. 추신 : 이것은 나에게 일어난 일이다. 나는 모든 것을 이해한다. 아무것도 작동하지 않는다. 나는 모든 것을 복사한다. 아무것도 작동하지 않는다. 그리고 나는 그 사람이하는 일을 그대로 그대로한다. , 여전히 PC의 세 가지 모두에서 작동하는 것은 없으므로 nt 문제가 장치에 있다고 생각하십시오.

+0

프로젝트를 어떻게 컴파일합니까? 'gcc main.cpp'를 호출하고 있습니까? – Frank

+0

또한 생성자 만 반환 값을 지정할 필요가 없습니다. 게시 한 코드는 링커에 도달하기 전에 컴파일되지 않아야합니다. – Frank

+0

@Frank 대부분의 컴파일러는'int' 리턴 타입을 기본으로합니다. 어떤 사람들은 반환 값이 함수에 있는지 확인하고 그 값을 벗어납니다. 나는 그것이 행해져서는 안된다고 동의하지만. Addl. info : https://stackoverflow.com/questions/331148/does-c-allow-default-return-types-for-functions – pepperjack

답변

1

선생님이 지정된 반환 형식이없는 기능을 가르쳐서는 안되기 때문에 코드를 완전히 복사하고 붙여 넣는 것은 의심 스럽지만 어쨌든 들어 갑시다. ..

가능성 # 클래스의 생성자를 만들려고했습니다. 이 경우 생성자 함수의 클래스 이름이 동일한 지 확인하십시오. 또한 생성자이므로 .mainClass()을 통해 호출 할 수 없습니다.

class mainClass 
{ 
    public: 
     mainClass(); 
}; 
mainClass::mainClass() 
{ 
    cout << "I am a banana" << endl; 
} 

가능성 # 2 당신은 클래스 멤버 함수 myfunction를 만드는 것을 의미했다. 함수가 어떤 리턴 타입인지 정말로 지정해야합니다. 일부 컴파일러에서는 int 반환 유형을 자동으로 가정하므로 생성 한 함수는 int myfunction();이지만 아무 것도 반환하지 않았으므로 실제로는 void myfunction();으로 지정해야합니다. Addl. 정보 : Does C++ allow default return types for functions?

다음으로 반환 유형을 추가하여 정의 방법을 변경하십시오.

void mainClass::myfunction() 
{ 
    cout << "I am a banana" << endl; 
} 

가능성 # 3는 사람들은 작동해야하지만 또 다른 문제는 당신이 mainclass.cpp를 연결하지 않았을 수도, 그래서 가능한 정의는 존재하지 않는다. 코드 블록에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 Add Files을 클릭 한 다음 mainclass.cpp를 추가하여 링커가 mainClass::myfunction()을 정의 할 수있게합니다.

은 mainclass.cpp이 프로젝트로 구축되는 경우, #include "mainclass.h" 후 파일 mainclass.cpp#error I'm included!를 추가하려고 문제를 해결합니다. 오류 I'm included!이 표시되면 링크되어 있으므로 #error을 제거 할 수 있습니다.

관련 문제