2012-04-21 4 views
-1

예기치 않은 충돌을 설명하는 데 도움주세요! 내가 가진 : 등QT 4.8 보통 비교시 충돌 발생

x.h

class x: QObject 
    struct 
    { 
     struct 
     { 
      struct 
      { 
       int state; 
       double curstring; 
       QTimer timer_scroll; 
       QTimer timer_done; 
      }color; 
      struct 
      { 
       int state; 
       double curstring; 
       QTimer timer_scroll; 
       QTimer timer_done; 
      }mono; 
     }S2L_NOTIFY; 

....

x.cpp

void x::draw(const int type, QString str, bool isNeedAnswer) 
{ 
    if(type == 3) 
    { 
     //here is crash! 
     if(bitmap.S2L_NOTIFY.mono.state == 3 && bitmap.S2L_NOTIFY.color.state == 3) 
     { 

if((bitmap.S2L_NOTIFY.mono.state == 3))-< 여기에 충돌하지

어디 내가 잘못 또는 compilator 잘못 알려주세요 - <

if((bitmap.S2L_NOTIFY.color.state == 3)) 여기에 충돌하지?

+2

'valgrind'또는 다른 디버거에서 프로그램을 실행할 수 있습니까? – sarnold

+1

적어도 컴파일 할 코드를 게시해야합니다. 제공 한 것은 foobar입니다. –

답변

1

문제는 x가 조건에 있지만, x::rndfunc() 함수가 x가 아닌 변수의 멤버 함수라는 것입니다. 그것은해야한다 :

// "this" refers to the current instance of class x 
if((this->y.z.f.nmb2 == NOTOK) && (this->y.z.f.nmb1 == NOTOK)) 

하거나 :

// but the "this" isn't actually necessary 
if((y.z.f.nmb2 == NOTOK) && (y.z.f.nmb1 == NOTOK)) 

(당신이 쓴대로).

편집 : 좋아, 원래 질문에 오타가 있었으므로 위의 내용은 더 이상 적합하지 않습니다. 새 대답은 다음과 같습니다.

f에는 구성원 변수 nmb1이없고 nmb2 만 있습니다.

편집 # 2 : 더 많은 오타가 있습니다. 내 새로운 대답 :

당신이하려는 것은 정말 엉망입니다. 하지 마.

+0

if ((this-> y.z.f.nmb2 == NOTOK) && (this-> y.z.f.nmb1 == NOTOK)) 그것은 나의 TYPO 였고, 여전히 프로그래머가 작동하지 않았습니다. – HARD

+1

@HARD 그렇다면 nmb1이 f의 멤버 변수가 아니라 (h가 아니라) 문제는 아닌가? – Anthony

+0

아니요, 나는 99 %를 확신합니다 – HARD

관련 문제