Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2012, 21:38   #1
MuradS60
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 15
По умолчанию Динамическое выделение памяти, конструктор с параметрами и vector

Добрый вечер! использую среду борланд с++ 5.02
есть класс

PHP код:
class REC {
    
int x1y1x2y2colorp90;
    public:
        
REC (int _x1,int _y1int _x2int _y2int _colorint _p90){
            
x1 _x1;
            
x2 _x2;
            
y1 _y1;
            
y2 _y2;
            
p90 _p90;
            
color _color;
        }
        ~
REC(){}
        
void paintclear(int a);
        
void moveLR(int b);
        
void moveUD(int c);
        
void moveLR90();
        
void rcol();
}; 
как мне с помощью Vector создать n'ое колличество объектов этого класса?
MuradS60 вне форума Ответить с цитированием
Старый 01.04.2012, 21:44   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

что-то типа:
Код:
#include <vector>

int main()
{
    size_t num = 10; //количество элементов

    //здесь, REC(0,1,2,3,4,5) конструктор элемента, со всей толпой его аргументов. 
    //Значения аргументов можешь подставить свои собственные.
    std::vector<REC> myArray( num ,REC(0,1,2,3,4,5) );
  
     return 0;  
}

Последний раз редактировалось _Bers; 01.04.2012 в 22:20.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 21:51   #3
MuradS60
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 15
По умолчанию

ругается на type name expected
MuradS60 вне форума Ответить с цитированием
Старый 01.04.2012, 22:20   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

извиняюсь, перепутал местами. Наоборот : сначала количество элементов, потом конструктор
См выше. Я подправил.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 22:31   #5
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

у Шилдта написано, что для этого, класс должен иметь перегруженные версии операторов < ==
в зависимости от кампилятора перегрузка операторов может быть не обязательной
SAMOUCHKA вне форума Ответить с цитированием
Старый 01.04.2012, 22:40   #6
MuradS60
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 15
По умолчанию

Как не крути все так же. Еще почему то ругалась на <REC::REC> could not find a match for 'REC::REC()'
дописал
vector<REC::REC> myArray(5, REC(0,1,2,3,4,5)); перестала
а обращение к элементам такое myArray[1].paintclear(1); ?
MuradS60 вне форума Ответить с цитированием
Старый 01.04.2012, 23:20   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от MuradS60 Посмотреть сообщение
Как не крути все так же. Еще почему то ругалась на <REC::REC> could not find a match for 'REC::REC()'
дописал
vector<REC::REC> myArray(5, REC(0,1,2,3,4,5)); перестала
а обращение к элементам такое myArray[1].paintclear(1); ?
Код показывай.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 23:23   #8
MuradS60
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 15
По умолчанию

PHP код:
#include <iostream.h>
#include <graphics.h>
#include <conio.h>
#include <alloc.h>
#include <vector>

using namespace std;

class 
REC {
    
int x1y1x2y2colorp90;
    public:
        
REC (int _x1,int _y1int _x2int _y2int _colorint _p90){
            
x1 _x1;
            
x2 _x2;
            
y1 _y1;
            
y2 _y2;
            
p90 _p90;
            
color _color;
        }
        ~
REC(){}
        
void paintclear(int a);
        
void moveLR(int b);
        
void moveUD(int c);
        
void moveLR90();
        
void rcol();
};

class 
ELP{
    
int xEyExradiusyradiuscolorE;
    public:
      
ELP (int _xEint _yEint _xradiusint _yradiusint _colorE){
    
xE _xE;
    
yE _yE;
    
xradius _xradius;
    
yradius _yradius;
    
colorE _colorE;
      }
      ~
ELP(){};
      
void paintclearE(int aE);
      
void moveUD_E(int bE);
      
void moveLR_E(int cE);
};


//Функции класса REC
void REC::paintclear(int a){
    if (
== 0setfillstyle(18);
        else
        
setfillstyle(11);
    
bar(x1y1x2y2);
}

void REC::moveLR (int b){
    
paintclear(0);
    
x1 x1 b;
    
x2 x2 b;
    
paintclear(1);
}
void REC::moveUD (int c){
    
paintclear(0);
    
y1 y1 c;
    
y2 y2 c;
    
paintclear(1);
}
void REC::moveLR90 (){
    
paintclear(0);
    
//cout <<"\nx1:"<<x1<<";y1:"<<y1<<";x2:"<<x2<<";y2:"<<y2;
    
if (x2-x1==100)
    {
x2 x2 - (100-50);
    
y2 y2 + (100-50);}
    else
    { 
x2 x2 + (100-50);
    
y2 y2 - (100-50);
    }
    
paintclear(1);
}

void REC::rcol(){
    
paintclear(0);
    if (
color == 4color 1;
        else 
color 4;
    
paintclear(1);
}
//Конец REC

//----------------------------------------------------------------------------

//Функции класса ELP

void ELP::paintclearE(int aE){
    if (
aE == 0){
      
setcolor(8);
      
setfillstyle(18);
      
fillellipse (xE,yExradiusyradius);
      
setfillstyle(18);
      
fillellipse (xE-7yE-7xradius-17yradius-17);
      
setfillstyle(18);
      
fillellipse (xE-7yE-7xradius-17yradius-17);
      
setfillstyle(18);
      
fillellipse (xE+7yE+7xradius-17yradius-17);
      
setfillstyle(18);
      
fillellipse (xE-7yE+7xradius-17yradius-17);
      
setfillstyle(18);
      
fillellipse (xE+7yE-7xradius-17yradius-17);
    }
    else {
      
setcolor(colorE);
      
setfillstyle(12);
      
fillellipse (xEyExradiusyradius);
      
setfillstyle(14);
      
fillellipse (xE-7yE-7xradius-17yradius-17);
      
setfillstyle(14);
      
fillellipse (xE-7yE-7xradius-17yradius-17);
      
setfillstyle(14);
      
fillellipse (xE+7yE+7xradius-17yradius-17);
      
setfillstyle(14);
      
fillellipse (xE-7yE+7xradius-17yradius-17);
      
setfillstyle(14);
      
fillellipse (xE+7yE-7xradius-17yradius-17);
     }
}

void ELP::moveLR_E (int bE){
    
paintclearE(0);
    
xE xE bE;
    
paintclearE(1);
}

//Конец ELP

void main () {

int gdriver DETECTgmodeerrorcode0rectang_cout;
initgraph (&gdriver, &gmode,"");
errorcode graphresult();
if (
errorcode != grOkcout <<"Error videodriver";

cout << "count rectangles: "cin >> rectang_cout;
//rectang = (REC *)malloc(sizeof(REC)*3);
vector<RECrectang(10,REC(1,1,2,3,4,5));
setfillstyle(1DARKGRAY);
bar (2020getmaxx()-20,getmaxy()-20);
/*REC ob (50,50,150,100,0,4);
cout << getmaxx()/2 <<" --- " <<getmaxy()/2 ;
ob.paintclear(1);
ELP ob1 (getmaxx()/1.5,getmaxy()/1.5,20,20,8);
ob1.paintclearE(1);*/
int k;
do{
    
getch() ;
    switch (
k) {
        case 
110:rectang[K].paintclear(1);K++;
        break;
        case 
97rectang[K].moveLR(-5);
        break;
        case 
100rectang[K].moveLR(5);
        break;
        case 
119rectang[K].moveUD(-5);
        break;
        case 
115rectang[K].moveUD(5);
        break;
        case 
113rectang[K].moveLR90();
        break;
    }
}
while (
!= 27);
closegraph();

MuradS60 вне форума Ответить с цитированием
Старый 01.04.2012, 23:35   #9
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

ну вот так на вскидку, глазками, я не вижу никаких особых проблем.

Код:
myArray[1].paintclear(1); //обращение к элементу по индексу, 
                                   //и запуск метода с аргументом, да.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 23:49   #10
MuradS60
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 15
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
ну вот так на вскидку, глазками, я не вижу никаких особых проблем.

Код:
myArray[1].paintclear(1); //обращение к элементу по индексу, 
                                   //и запуск метода с аргументом, да.
Но факт что зараза не хочет компилиться )))
MuradS60 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив указателей, динамическое выделение памяти Андрей! Общие вопросы C/C++ 11 09.02.2012 01:05
Динамическое выделение памяти , realloc. _-Re@l-_ Общие вопросы C/C++ 8 03.11.2011 10:20
Динамическое выделение памяти, как лучше? Пепел Феникса Общие вопросы по программированию, компьютерный форум 10 11.03.2010 09:44
Динамическое выделение памяти под массивы Артем125 Общие вопросы C/C++ 4 07.04.2009 09:52
Динамическое выделение памяти FW-TOT Общие вопросы C/C++ 2 19.12.2008 00:42