바이링 님이 쓰신 글 :
: aaaa 님이 쓰신 글 :
: : 바이링 님이 쓰신 글 :
: : : 클래스 power, power1, power2 이 세가지 클래스를 하나의 power이라는 클래스로 합치는 방법을 알고싶습니다..ㅠㅠ
: : : 저 혼자 합쳐보려고 했는데요; 클래스 power 클래스 하나로는 세개의 생성자가 한번에 넣으면 에러가 뜨더라구요..ㅠㅠ
: : : power은 이항연산자이구요 power1은 단항연산자이구 power2는 프렌드 연산자에요 세개 클래스가 아닌 하나의 power이라는 클래스에 세개의 클래스의 생성자를 모두 한번에 합쳐서 넣을수 있는 방법 알려주세요 !!!!!!!!
: : :
: : : class power{
: : : int xxx, yyy;
: : : public:
: : : power() { xxx=yyy=0;}
: : : power(int xx, int yy) {xxx=xx, yyy=yy;}
: : : void get_xxyy(int &xx, int&yy) { xx= xxx; yy= yyy;}
: : : power operator + (power pp);
: : : };
: : :
: : : power power::operator +(power pp)
: : : {
: : : power ttt;
: : : ttt.xxx = xxx + pp.xxx;
: : : ttt.yyy = yyy + pp.yyy;
: : : return ttt;
: : : }
: : :
: : : class power1{
: : : int zzz;
: : : public:
: : : power1(int nnn) { zzz= nnn;}
: : : power1() { zzz = 0;}
: : : int val(){return zzz; }
: : : void operator ++() {++zzz;}
: : : void operator --() {--zzz;}
: : : };
: : :
: : : class power2{
: : : double re1, re2;
: : : public:
: : : power2(double rr, double ee) { re1=rr; re2=ee;}
: : : power2() { re1 = 0; re2 = 0;}
: : : friend power2 operator +(power2, power2);
: : : friend power2 operator -(power2, power2);
: : : void operator()();
: : : };
: : :
: : : power2 operator +(power2 g1, power2 g2)
: : : {
: : : power2 ttmmpp;
: : :
: : : ttmmpp.re1 = g1.re1 + g2.re1;
: : : ttmmpp.re2 = g1.re2 + g2.re2;
: : : return ttmmpp;
: : : }
: : :
: : : power2 operator -(power2 g1, power2 g2)
: : : {
: : : power2 ttmmpp;
: : :
: : : ttmmpp.re1 = g1.re1 - g2.re1;
: : : ttmmpp.re2 = g1.re2 - g2.re2;
: : : return ttmmpp;
: : : }
: : :
: : : void power2::operator ()()
: : : {
: : : cout << re1 << re2 << endl;
: : : };
: : :
: :
: : 상속을 해버리면 안되요?
: :
: :
: : class power{
: : int xxx, yyy;
: : public:
: : power() { xxx=yyy=0;}
: : power(int xx, int yy) {xxx=xx, yyy=yy;}
: : void get_xxyy(int &xx, int&yy) { xx= xxx; yy= yyy;}
: : power operator + (power pp);
: : };
: :
: : power power::operator +(power pp)
: : {
: : power ttt;
: : ttt.xxx = xxx + pp.xxx;
: : ttt.yyy = yyy + pp.yyy;
: : return ttt;
: : }
: :
: : class power1 : public power{ //여기처럼 1차상속
: : int zzz;
: : public:
: : power1(int nnn) { zzz= nnn;}
: : power1() { zzz = 0;}
: : int val(){return zzz; }
: : void operator ++() {++zzz;}
: : void operator --() {--zzz;}
: : };
: :
: : class power2 : public power1{ << //여기처럼 2차상속
: : double re1, re2;
: : public:
: : power2(double rr, double ee) { re1=rr; re2=ee;}
: : power2() { re1 = 0; re2 = 0;}
: : friend power2 operator +(power2, power2);
: : friend power2 operator -(power2, power2);
: : void operator()();
: : };
: :
: : power2 operator +(power2 g1, power2 g2)
: : {
: : power2 ttmmpp;
: :
: : ttmmpp.re1 = g1.re1 + g2.re1;
: : ttmmpp.re2 = g1.re2 + g2.re2;
: : return ttmmpp;
: : }
: :
: : power2 operator -(power2 g1, power2 g2)
: : {
: : power2 ttmmpp;
: :
: : ttmmpp.re1 = g1.re1 - g2.re1;
: : ttmmpp.re2 = g1.re2 - g2.re2;
: : return ttmmpp;
: : }
: :
: : void power2::operator ()()
: : {
: : cout << re1 << re2 << endl;
: : };
: :
: : power2 가 마지막상속받은 클래스이고 public 부분은 오픈되어있으나
: : 함수사용은 용이할거구요 머 클래스생성할때 메소드나 설정하면 될거같은데요
: : 3개의클래스를 하나로 만들어라 라고한다면 상속뿐이없을텐데요
: : 아니면 클래스안에 종속시키는것도있고
:
: ---------------------------------
: 그렇다면 종속시키면 어떤식으로 위의 프로그램이 바뀔지요 깔끔하게 power에 나머지 power1,power2가 모두 들어가있게끔 하고 싶은데
: 위의 상속은 결국은 프로그램상 power1,power2 클래스가 존재해야되잖아요? 존재하지 않게끔 하나의 클래스에 모두 넣으려면 어떻게 하나요 ?? 종속을 해야할것같은데...
그냥 순서만 바꾸세요 제가답변한거에 순서는 POWER3 이마지막에 최종적으로 쓸 클래스에요
그렇기때문에 반대로 power3을 poer2에 상속시키고 power2를 power에 상속시키면됩니다
그러면 power 클래스만 사용하시면 2 ,3 클래스에있는 함수 다사용도되고요 하나로 합처집니다
클래스 사용하시지 public부분에 함수만 사용가능한것도아실테고
순서만 바꿔주시면됩니다 결론은요