2013-03-21 6 views
0
class Main 
{ 
    Struct BranchSub 
    { 
    Sub() 
    { 
     subName[0] = '\0'; 
    } 
    char subName[20]; 
    }; 

    struct MainSub 
    { 
    Sub sub[20]; 
    }; 
}; 

subName이 주어진 텍스트와 일치 할 때 subName 포인터를 반환하는 메서드가 필요합니다. 예 :구조체의 멤버 변수에 대한 포인터

MainSub test; 
if(strcmp(test.BranchSub[5].subName, "Hello") == 0);//return pointer to `test.Branchsub[5].subName` 

가능합니까 ?? 또는 다른 방법으로 원하는 결과를 얻을 수 있습니까?

+3

C 배열 대신'std :: string'을 사용할 것을 제안합니다. –

+0

char 또는 char 상수 포인터를 반환하는 함수가 될 수 있습니다. 그러나 나는 또한'std :: string'을 사용하고 당신에게'std :: string' 객체에 대한 참조를 반환하는 것을 제안한다. –

+0

배열? 만약 당신이 char 배열을 의미한다면, 코드가 전송되어야하는 장치는 문자열을 지원하지 않습니다, probs입니다. – Cybercop

답변

1

예, test.BranchSub[5].subName을 사용할 수 있습니다. 질문의 두 번째 부분에 대한

, 당신은 std::string을 사용해야합니다

class Main 
{ 
    struct BranchSub 
    { 
    std::string subName; 
    }; 

    struct MainSub 
    { 
    BranchSub sub[20]; 
    }; 
}; 

그리고

MainSub test; 
if(test.sub[5].subName == "Hello") 

이 더 명확입니다.

BranchSub sub[20] 대신 std::vector<BranchSub>을 사용할 수도 있습니다.

관련 문제