2012-12-12 5 views
0

나는 헤더 파일을 정의한다 "check.h"는 struct 다음 C++ : 헤더 파일에서 선언 구조체 리턴 형 기능

#ifndef CHECK_H 
#define CHECK_H 
#include<string> 
struct Test{ 
    std::string check; 

}; 

#endif 

내가 다른 헤더 파일을 반환으로 다음과 같은 기능을 가지고있다 " test.h" 위에서 정의 된 struct Test로 입력
#ifndef TEST_H 
#define TEST_H 
#include<string> 
#include "check.h" 
Test display(std::string); 
#endif 

그러나 심지어이 헤더 파일에 "check.h"을 포함에

가 나는 unable to resolve identifier 오류가 발생합니다. 이 문제를 해결하려면 어떻게해야합니까?

+0

코드를 게시 할 수 있습니까? 아니면 적어도 더 많이? – StevieG

+0

'#include '와'std :: string'을 사용 했나요 아니면 헤더에'string' 이름을 넣었습니까? – juanchopanza

+0

이 C 또는 C++입니까? C에서는'struct test'가 필요하며'string'이 게시 된 코드 또는'typedef'에서'std :: string'인지 확실하지 않습니다. – hmjd

답변

0

test.h은 형식이 아닌 구조체를 정의하므로 struct Test을 반환해야합니다.

또는 단지는 타입 정의에 구조체 정의를 변경 :

typedef struct s_Test{ 
    string check; 
} Test; 

참조 위키 피 디아 there

+7

그러나 C에서'struct '만 언급 할 필요는 없습니까? – Enigman

+0

하지만 네, 이제 작동합니다. 고마워! – Enigman

+2

질문은 C++로 태그가 지정되고 C++ 헤더를 사용합니다. 이 대답은 C++에서 잘못된 것입니다. – juanchopanza

2

귀하의 코드는 변수 나 함수만큼 당신이 뭔가를 (정의하지 않은 것처럼 괜찮을 것) 이름은 Test입니다. 훨씬 더 나은 솔루션이 같은 이름을 사용하지 않도록하는 것입니다 있지만

struct Test display(std::string); 
^^^^^^ 

: 당신이있는 경우

, 당신은 분명히 당신이 다른 일을하는 클래스를 참조하고하지 않는 것을 확인해야합니다 다른 것들.

관련 문제