2017-01-04 3 views
0

인데 main.cpp 파일과 main.cpp에 포함 된 다른 cpp 파일과 헤더 파일이 있습니다. 헤더 파일에서 #indef, #define#endif을 올바른 위치에 사용했으며 헤더 파일도 main.cpp에 포함 시켰습니다. 그러나 주 파일에서 만든 함수를 사용하려고하면 "Identifier (function_name) undefined"오류가 발생합니다. 예를 들어식별자 Undefined C++ CPP가 있고 헤더 파일이

: 내가 잘못 뭐하는 거지

//main.cpp 
#include "example.h" 

int main(){ 
foo(); 

//example.cpp 
example::foo(){ 
    //code 
} 

//example.h 
#ifndef EXAMPLE_H 
#define EXAMPLE_H 

class example{ 
int foo(); 
} 
#endif 

? 필요하지 않은 일을하고 있습니까?

+2

'foo '가 정의되지 않았기 때문에'foo()'가 실패합니다. 어쩌면 당신은 정신적으로'foo'와'example :: foo'를 혼동하고 있습니다. 그것들은 다른 것들입니다. –

+0

그리고 그 경우에도'foo'는'example'에'private'입니다. 그래서 (a) 객체 인스턴스없이 (b) 어떤 정도의 friending없이 main에서 호출하는 것은 불가능합니다. 나는 당신이 [C++에 관한 적당한 책] (https://stackoverflow.com/search?q=%5Bcpp%5D+book)을 필요로한다고 생각한다. – WhozCraig

답변

2

foo();을 호출하면이 오류가 발생합니다. example::foo 함수를 호출하려면 example 유형의 객체가 필요합니다.

class example { 
public: 
    void foo(); 
}; 

예 :

나는 다음과 같은 프로그램이 가정 :

이 같이 : main이 사용할 수 있도록

int main() { 
    example ex; 
    ex.foo(); 
} 

당신은 또한 foo 방법을 공개해야

void foo() { // #1 
    // typetype codecode; 
} 

class Example { 
public: 
    void foo(); 
}; 

Example::foo() { // #2 
    // typetype codecode; 
} 

int main() { 
    Example ex; 

    foo(); // #1 gets called 
    ex.foo(); // #2 gets called on object ex 
} 

자세한 정보 :

이런 종류의 것을 더 잘 이해하려면 객체 지향 프로그래밍과 클래스에 대해 알아야합니다. OOP에 대한 설명은 다음 사이트를 포함 :

난 당신이 OOP에 대해 설명하는 많은 사이트를 찾을 수 있습니다 확신합니다.

관련 문제