Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Как обойти ISO? в class?


Автор: DragoonFighter 18.5.2009, 20:59
Здравствуйте уважаемые программисты. 

У меня такой вопрос? Можно ли обойти ISO правила и задать в классе под public: значение int? Если да, то как? Если нет то как можно переписать class чтобы задать значение. Нужно вот какой результат:

Код

class Sam {
    public:
        // sam
        int x1 = 10;
        int y2 = 419 - 10;
        // go_sam
        int xx = 0;
        int yy = 0;
        char c;
        // void
        void sam(char go, int x, int y) {
            switch (go){                
                case 'd':
                if(getpixel(x1+x+10, y2+y+10) == 4) {}
                else if(getpixel(x1+x+10, y2+y+10) != 4) {
                    q(x1+x, y2+y, (x1+x)+10, (y2+y)+10, 9);
                liney(x1+x-1, y2+y, y2+y+10, 0);
            }
        }
        // ....
        void go_sam() {
            while(1) {                
                c = getch();
                if(c == 'd') {                    
                    if(getpixel(x1+x+10, y2+y+10) == 4) {}
                else if(getpixel(x1+x+10, y2+y+10) != 4) {                    
                    xx++;
                }            
            }
        sam(c, xx, yy);
    }
}
}
};


P.S.: Код не важен это просто пример, важно то что под public.

Автор: NightmareZ 18.5.2009, 21:04
А зачем?  smile 

Автор: andrew_121 18.5.2009, 21:19
Цитата(DragoonFighter @  18.5.2009,  20:59 Найти цитируемый пост)
значение int? Если да, то как?

Определить можно. Но инициализировать можно только в конструкторе класса.
Код

class some {
public:
   some():val(0) {}
   ...
   int val;
};


Автор: zim22 18.5.2009, 21:31
Цитата(andrew_121 @  18.5.2009,  21:19 Найти цитируемый пост)
Но инициализировать можно только в конструкторе класса

не только.
Код

class C {
  static const int size = 10;
};


кстати, если создавать объект класса в глобальной области видимости, то его POD-члены будут инициализированы так, если бы они были определены вне класса, т.е. значением по умолчанию (нулём).
Код

struct X {
int val;
};
X x;
int main() {
  int res = x.val; // res == 0
}

Автор: DragoonFighter 18.5.2009, 21:32
Ладно, благодарю! 

Автор: mes 18.5.2009, 21:39
Цитата(DragoonFighter @  18.5.2009,  19:59 Найти цитируемый пост)
: Код не важен это просто пример, важно то что под public.

а почему в этом приведем примере столько мути ?! нельзя ли разве суть было выделить ?
неужто самим было бы приятно копаться в этой куче ... ?!

вот Вам два варианта, с учетом того как я понял Ваш вопрос:

Код

struct Sam1 {
       enum  { eX1 = 10,
               eY2 = 419 - 10
             };
        void sam(int x, int y) { line (eX1+x-1, eY2+y, 0, eY2+y+10); }
};

Код


struct Sam2 {
       static const int X1 = 10;
       static const int Y2 = 419 - 10;

       void sam(int x, int y) { line (X1+x-1, Y2+y, 0, Y2+y+10); }
};



Автор: andrew_121 18.5.2009, 22:46
Цитата(zim22 @  18.5.2009,  21:31 Найти цитируемый пост)
static const int size = 10;

Гы... Верно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)