클래스 내에서 다른 파일에 정의 된 구조체를 가리킬 수 있습니까?다른 파일에 정의 된 구조체에 대한 포인터
이cannot convert 'main()::list*' to 'entry::list*' in assignment
MAIN.CPP :
이#include "entry.h"
#include <vector>
int main()
{
struct list
{
std::vector<entry*> entryVector;
int temp;
};
list A;
entry B;
B.ptrToStruct = &A;
return 0;
}
entry.h :
#ifndef ENTRY_H
#define ENTRY_H
#include <string>
class entry
{
public:
struct list; //prototype does not work
std::string text;
struct list* ptrToStruct;
};
#endif // ENTRY_H
나는 또한에 시도
나는 아래의 코드처럼 그것을 시도하지만이 오류가 다음과 같이 프로토 타입을 작성하십시오 :
struct main::list;
"main '이 (가) 선언되지 않았기 때문에 작동하지 않았습니다.
먼저 용어에 대해 약간주의하십시오. * 프로토 타입 *은 함수의 전방 선언입니다. 'entry' 클래스에서 여러분이하고있는 일은 단순히'entry :: list' 클래스를 선언하는 것입니다. 그런 다음 문제에 대해 : 아니오, 다른 범위의 함수에서 로컬로 선언 또는 정의 된 기호에 액세스 할 수 없습니다. –
BTW, 항목이 서로 상호 연결되는 것이 약간 이상합니다. 각'entry'가'list'에 의해 소유된다면, 왜 그것이 속해있는 목록을 추적해야합니까? 항목을 추가하고 제거하는 것은 매우 복잡 할 것입니다. –
설정 메뉴 용입니다. 항목은 런타임 중에 변경되지 않습니다. 해당 메뉴 항목의 하위 메뉴를 가리 키도록 ptrToStruct가 필요합니다. 내 구조체는 항목의 벡터를 보유하고있는 나의 목록입니다. 이러한 항목 중 일부에는 하위 목록이 있습니다. 그게 왜 포인터가 필요한지. 구조체는 또한 선택된 항목을 저장하는 int를 보유합니다. 나는 이것이 이것이 최선의 방법이 아니라고 생각합니다. 나는 힌트를 위해 열린다! –