2014-09-08 4 views
0

안녕하세요, 나는 객체 지향 프로그래밍에 익숙하지 않습니다. 여기에 내가 의도 세 애니메이션 플롯개체 간의 변수 공유를 제거하는 방법은 무엇입니까?

subwindow_movie *child_Movie = new subwindow_movie; 
child_Movie->setGeometry(20,100,620,560); 
child_Movie->setplot(0); 
child_Movie->show(); 

subwindow_movie *child_Movie1 = new subwindow_movie; 
child_Movie1->setGeometry(680,100,620,560); 
child_Movie1->setplot(1); 
child_Movie1->show(); 


subwindow_movie *child_Movie2 = new subwindow_movie; 
child_Movie2->setGeometry(325,350,620,560); 
child_Movie2->setplot(2); 
child_Movie2->show(); 

를 만들하지만 문제는 그들이 내가 세 번째 subwindow_moviechild_movie0child_movie1을 만들어 전자는 모두 setplot 값이 2setplot의 모든 주와 같은 값; 그 제거하는 방법 ... 아래의 클래스

#include "subwindow_movie.h" 
#include "ui_subwindow_movie.h" 

#include "plot.h" 

#include <qapplication.h> 

#include <qmainwindow.h> 

int movie; 

subwindow_movie::subwindow_movie(QWidget *parent) : 

    QDialog(parent), 

    ui(new Ui::subwindow_movie) 

{ 

    ui->setupUi(this); 

} 

subwindow_movie::~subwindow_movie() 
{ 
    delete ui; 
} 

void subwindow_movie::setplot(int value) 

{ 
    if (value ==0) 

    { d_plot0 = new Plot(this); 

     movie=0;} 

    else if (value ==1) 

    { d_plot1 = new Plot(this); 

     movie=1;} 

    else if (value ==2) 

    { d_plot2 = new Plot(this); 

     movie=2;} 

} 


void subwindow_movie::on_movie_slider_valueChanged(int value) 

{ 
    if (movie ==0) 

    { d_plot0->setAlpha(value); 

     } 
    else if (movie ==1) 

    { d_plot1->setAlpha(value); 

    } 
    else if (movie ==2) 

    { d_plot2->setAlpha(value); 

    } 
} 

진짜 문제는 movie2를 실행하는 child_movie0 원인 새 child_movie의 창조에 대한 변경 int movie입니다 내부의 설정 값 기능입니다. 난 moviechild_movie1의 생성과 함께 child_movie0에 대한 변경 변수를 원하지 않아.

int movie;

movie 변수의 하나의 인스턴스가 함께

답변

2

는 (그것이 전역 변수이다). 값을 설정할 때마다 이전 값을 덮어 씁니다.

class subwindow_movie { 
    int movie; 

public: 

    ... 
} 

그런 movie 당신이 만드는 각 subwindow_movie 개체에 대한 별도의 인스턴스로 볼 수 있습니다 :

movie에게 대신 멤버 변수을 확인합니다. subwindow_movie 메서드 내에서 이전처럼 변수에 액세스 할 수 있습니다.

기본적으로, 당신은 전역 변수를 사용해서는 안 - 또한 http://www.learncpp.com/cpp-tutorial/42-global-variables를 참조하십시오 를 전역 변수가

+0

이 제안하지만 여전히 영화 값이 새로운 child_movie 선언으로 변화를 시도 악 왜 .. :( – habbas33

+0

해결 감사합니다 :) – habbas33

+0

을 @ user3871970 좋은 :) 특별히 당신이해야 할 일이 구체적으로 무엇이며, 내 대답에 무엇을 추가 할 수 있습니까? –