Показать сообщение отдельно

  #2215  
Старый 29.01.2009, 22:59
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


По умолчанию

w_2k

1. Не используй инлайн функции(это функции, которые определены в самом классе). Их содержимое как-бы копируется на место вызова, что приводит к плохим последствиям. Выноси все отдельно в файл.

2. Не используй srand(time(NULL)); в цикле, т.к идет постоянная привязка к одному и тому же времени. Выноси за цикл.



3. Проблема твоя в том, что ты указываешь статический массив по дефолту. Такое не допустимо при создании объекта. Выделяй память динамически в конструкторе(да и не забудь написать копир конструктора):

PHP код:
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <time.h>

using namespace std;

class 
Koloda
{
private:
    
int count;
            
int ** cards;
public:    
 
Koloda(int c){count=c;}
Koloda()
{
      
count=36;
      
int ** cards = new int*[2];     //двумерный массив
      
for(int i 02i++)
      {
         
cards[i] = new int[2];
         for(
int j 02j++)
         {
             
cards[i][j] = 0;
         }
      }
      
cards[0][0] = 6;
      
cards[0][1] = 7;
      
cards[1][0] = 1;
      
cards[1][1] = 2;
}

~
Koloda()
{
      for(
int i 02i++)
      {          
         
delete cards[i];
      }
      
delete cards;
}

void Take_card(){
    
int i;
    
int j;
            
srand(time(NULL));
    do {
        
        
rand()%9;
        
rand()%4;
    }
    while(
cards[i][j]!=0);
    
cards[i][j]=0
    if(
count>0){count--;}
    else{
        
cout << "Карт больше нет";
    }

}
}; 

Herflrish, а почему нет?! Только не забудь удалять указатели...

Последний раз редактировалось ChaaK; 30.01.2009 в 00:18..
 
Ответить с цитированием