Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
1

Ссылки на тип данных в классе

08.01.2014, 11:57. Показов 2731. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
ребят, подскажите, как это Создать класс содержащий ссылку на int? не понимаю ссылки...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2014, 11:57
Ответы с готовыми решениями:

Константные ссылки на неправильные тип данных
Здравствуйте, вопрос небольшой, так что сразу к делу. Я тут вычитал, что когда мы создаем ссылку...

Ссылки в классе. Отследить изменения переменной
Пишу игру в проекте есть 4 класса class Entity, class PLAYER, class Animation и class...

Переменная, содержащая тип, в шаблонном классе
есть некий шаблонный класс. объект класса создается как-то так newtype<int> a; здесь int...

Можно ли в классе принимать любой тип?
class Figure :public AllData { protected: int p1; int p2; public: Figure(int p1=NULL, int...

22
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
08.01.2014, 12:27 2
Как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
class MyClass
{
  private:
            int & var1;
            int & var2;
  public:
            void myFunc(int & variable1, int & variable2)
           { 
             var1 = variable1;
             var2 = variable2;
           }
};
А зачем это ?
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 12:29  [ТС] 3
Цитата Сообщение от egor2116 Посмотреть сообщение
Как то так
а в конструкторе потом как объявить эти ссылки? это важно
и тем более если надо сделать ссылку на int vector[100] например
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
08.01.2014, 12:40 4
а в конструкторе потом как объявить эти ссылки? это важно
и тем более если надо сделать ссылку на int vector[100] например
Лучше напишите все задание, а то вырванная из контекста строка может быть не правильно истолкована.
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 12:44  [ТС] 5
Цитата Сообщение от egor2116 Посмотреть сообщение
Лучше напишите все задание
Создать класс вектор, содержащий ссылку на int, размерность вектора и переменную ошибки. Класс имеет конструкторы по умолчанию, конструктор с одним и двумя параметрами, конструктор копирования и деструктор
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
08.01.2014, 12:46 6
содержащий ссылку на int
Я думаю в данном случае это просто переменная.
Минуту, набросаю вам примерный интерфейс.
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
08.01.2014, 12:46 7
Цитата Сообщение от Serega_094 Посмотреть сообщение
Создать класс вектор, содержащий ссылку на int, размерность вектора и переменную ошибки
В данном случае все-таки не ссылку, а указатель.
1
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 12:54  [ТС] 8
Цитата Сообщение от egor2116 Посмотреть сообщение
Я думаю в данном случае это просто переменная.
Минуту, набросаю вам примерный интерфейс.
буду очень признателен

Добавлено через 27 секунд
Цитата Сообщение от 0x10 Посмотреть сообщение
В данном случае все-таки не ссылку, а указатель.
все равно темный лес для меня

Добавлено через 2 минуты
да и задание в два раза больше, но мне бы вначале с указателем разобраться этим...
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
08.01.2014, 12:55 9
Как то так, остальные методы типа поиска, сортировки по вкусу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Vector
{
  private:
          int * array;
          unsigned int size;
          int error;
  public:
         Vector(unsigned int _size = 5) : size(_size)
         {
           array = new int[size];
           error = 0;
         }
         
         Vector(const Vector & vec)
         {
           size = vec.getSize();
           array = new int[size];
           error = vec.getError();
         }
         
         ~Vector()
         {
           delete [] array;
           array = NULL;
         }
         
         unsigned int getSize()const;
         int getError()const;
         void push_back(int var);
         int & operator[] (int idx);       
};
1
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 13:08  [ТС] 10
спасибо))

Добавлено через 8 минут
Цитата Сообщение от egor2116 Посмотреть сообщение
Лучше напишите все задание
все задание вообще выглядит вот так:
Создать класс вектор, содержащий ссылку на int, размерность вектора и переменную ошибки. Класс имеет конструкторы по умолчанию, конструктор с одним и двумя параметрами, конструктор копирования и деструктор. Определить оператор +, - , * , - как дружественные функции, =, +=, -=, *=,[] - как функции-члены. Определить операторы =, +, - , *, +=, -=, *= с целым числом операторы ++ и --. Определить функцию печати. Сравнить время работы созданного класса и встроенного массива типа int. Перегрузить операторы вывода и ввода в поток
ужас для меня
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
08.01.2014, 13:13 11
ужас для меня
))
так а что не получается ?
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 13:15  [ТС] 12
Цитата Сообщение от egor2116 Посмотреть сообщение
так а что не получается ?
щас кину то, что я сделал, запутался полностью

Добавлено через 43 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <ctime>
#include <cstdlib>
using namespace std;
 
class Vector {
private: 
    int *V, size;
    bool error;
public:
    Vector();  // конструктор
    Vector(int); // конструктор с параметрами
    Vector(const Vector &vc); // констуктор копирования
    ~Vector(); // деструктор 
    void show(); // функция печати
    friend int Vector::operator +(const Vector *); // дружественная +
    friend int Vector::operator -(const Vector *); // дружественная -
    friend int Vector::operator *(const Vector *); // дружественная *
    /*Vector::operator =(){ // функция-член = ; поиск ошибкки
    }
    Vector::operator +=() { // функция-член += ; добвление элемента в вектор 
    }
    Vector::operator -=() { // функция-член -= ; удаление заданного элемента из вектора
    }
    Vector::operator *=() { // функция-член *= ; умножение векторов
    }
    Vector::operator []() { // функция-член [] ; вывод заданного элемента на экран
    }*/
};
    Vector::Vector () { // конструктор
        cout<<"Вызов конструктора"<<endl;
        this->V=vector[100];
        this->size=0;
        //this->error= false;
    }
    Vector::Vector(int size) { // констурктор с параметрами
        cout<<"Введите размер вектора:"<<endl;
        cout<<"Размер: ";
        cin>>size;
        Vector::size=size;
    }
    Vector::Vector(const Vector &) { // конструктор копирования
        this-> V[100]=vc.V[100];
        this->size=vc.size;
        //this->error=vc.error;
    }
    Vector::~Vector(){ // деструктор 
        cout<<"Объект "<< V << "разрушен"<<endl;
        _getch();
    }
    void Vector::show (){
        cout<<"В векторе содержится:"<<endl;
        for (int i=0; i<size; i++)
        {cout<<V[i]<<endl;} 
        //cout<<error;
    }
     Vector::operator +(int a){ // сложение элементов вектора с числом
        cout<<"Вектор после сложения"<<endl;
        for (int i=0; i<size; i++)
        {V[i]=V[i]+a;
        cout<<V[i]<<endl;
        }
    }
    Vector::operator -(int a){ //вычитание числа из элементов вектора
        cout<<"Вектор после вычитания "<<endl;
        for (int i=0; i<size; i++)
        {V[i]=V[i]-a;
        cout<<V[i]<<endl;
        }
    }
    Vector::operator *(int a){ // умножение вектора на число
        cout<<"Вектор после умножения"<<endl;
        for (int i=0; i<size; i++)
        {V[i]=V[i]*a;
        cout<<V[i]<<endl;
        }
    }
    void main(){
    setlocale(0,"russian");
    srand(time(NULL));
    for (int j=0; j<Vector::size; j++)
        {vector[j]=rand()%100+1;}
        int a;
    cout<<"Введите число а "<<endl;
    cin>>a;
    _getch();
    }
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
08.01.2014, 14:01 13
сейчас посмотрю(ходил обедать)
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 14:06  [ТС] 14
Цитата Сообщение от egor2116 Посмотреть сообщение
ходил обедать
приятного пищеварения
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
08.01.2014, 15:05 15
Как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include <iostream>
#include <fstream>
 
/*Îïðåäåëèòü îïåðàòîð +, - , * , - êàê äðóæåñòâåííûå ôóíêöèè, =, +=, -=, *=,[] - êàê ôóíêöèè-÷ëåíû.
Îïðåäåëèòü îïåðàòîðû =, +, - , *, +=, -=, *= ñ öåëûì ÷èñëîì îïåðàòîðû ++ è --. Îïðåäåëèòü ôóíêöèþ ïå÷àòè.
 Ñðàâíèòü âðåìÿ ðàáîòû ñîçäàííîãî êëàññà è âñòðîåííîãî ìàññèâà òèïà int.
  Ïåðåãðóçèòü îïåðàòîðû âûâîäà è ââîäà â ïîòîê*/
 
class Vector
{
  private:
          int * array;
          int error;
          unsigned int addSize;
          unsigned int size;
          unsigned int index;
  public:
         Vector(unsigned int _size = 5) : size(_size)
         {
           array = new int[size];
           error = 0;
           index = 0;
           addSize = 5;
         }
         
         Vector(const Vector & vec)
         {
           size = vec.getSize();
           array = new int[size];
           error = vec.getError();
           for(int i = 0; i < size; ++i)
           {
             array[i] = vec.getArray()[i];
             index = i;
           }
           addSize = 5;
         }
         
         ~Vector()
         {
           delete [] array;
           array = NULL;
         }
         
         unsigned int getSize()const{ return size; }
         int getError()const{ return error; }
         unsigned int getIndex()const{ return index; }
         int * getArray()const{ return array; }
         
         void push_back(int var)
         {
           if(index + 1 < size)
             array[++index] = var;
           else
           {
             int * arr = new int[size + addSize];
             for(int i = 0; i < size; ++i)
              arr[i] = array[i];
             arr[++index] = var;
           }   
         }
         
         /* äðóæåñòâåííûå */
         friend const Vector & operator+ (Vector & vec1, int & var)
         {
           for(int i = 0; i < vec1.getIndex(); ++i)
             vec1[i] += var;
              return vec1;
         }
         
         friend Vector operator- (Vector & vec1, int & var)
         {
           for(int i = 0; i < vec1.getIndex(); ++i)
             vec1[i] -= var;
              return vec1;
         }
         
         friend Vector operator* (Vector & vec1, int & var)
         {
            for(int i = 0; i < vec1.getIndex(); ++i)
             vec1[i] *= var;
              return vec1;    
         }
         
         friend std::ostream & operator<< (std::ostream & out, Vector vec)
         {
           for(int i = 0; i < vec.getIndex(); ++i)
             out << vec[i] << " ";
           out << std::endl;
           return out;
         }
         
          friend std::istream & operator>> (std::istream & in, Vector vec)
         {
           for(int i = 0; i < vec.getIndex(); ++i)
             in >> vec[i];
           return in;
         }
         
         /* ôóíêöèÿ-÷ëåí */
         int & operator[] (int idx){ return array[idx]; } 
         
         Vector & operator+= (int var)
         { 
             for(int i = 0; i < index; ++i)
                array[i] += var;
             return *this;
         }
         
         Vector & operator-= (int var)
         { 
             for(int i = 0; i < index; ++i)
                array[i] -= var;
             return *this;
         }
         
         Vector & operator*= (int var)
         { 
             for(int i = 0; i < index; ++i)
                array[i] *= var;
             return *this;
         }
         
         Vector & operator++ ()
         { 
             for(int i = 0; i < index; ++i)
                ++array[i];
             return *this;
         }
         
         Vector & operator++ (int)
         { 
             for(int i = 0; i < index; ++i)
                array[i]++;
             return *this;
         }
         
         Vector & operator-- ()
         { 
             for(int i = 0; i < index; ++i)
                --array[i];
             return *this;
         }
         
         Vector & operator-- (int)
         { 
             for(int i = 0; i < index; ++i)
                array[i]--;
             return *this;
         }
         
         Vector & operator= (const int & var)
         { 
             for(int i = 0; i < index; ++i)
                array[i] = var;
             return *this;
         }
         
          Vector & operator= (Vector & vec)
         { 
                delete [] array;
                size = vec.getSize();
                array = new int[size];
                index = vec.getIndex();
                error = vec.getError();
                for(int i = 0; i < index; ++i)
                  array[i] = vec[i];
             return *this;
         }       
};
 
int main()
{   
 const size_t SIZE = 10;
 Vector vec1(SIZE), vec2;
 
 for(int i = 0; i < SIZE; ++i)
     vec1[i] = i;
     
 std::cout << vec1;
 
    
  system("PAUSE");
  return 0;
}
1
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 15:16  [ТС] 16
Спасибо тебе огромное ты меня спас у преподавателя спрашивал как делать..сама не знает, а такие задает еще раз спасибо
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
08.01.2014, 15:26 17
Только хочу предупредить возможны, ошибки, не компилировал, проверь все перед тем как сдавать.
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 15:39  [ТС] 18
Цитата Сообщение от egor2116 Посмотреть сообщение
Только хочу предупредить возможны, ошибки, не компилировал, проверь все перед тем как сдавать.
я проверил откомпиллировал, кое-что добавил все работает
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
08.01.2014, 15:43 19
egor2116, немного критики в образовательных целях
Цитата Сообщение от egor2116 Посмотреть сообщение
for(int i = 0; i < size; ++i)
сравнение знакового и беззнакового
Цитата Сообщение от egor2116 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
void push_back(int var)
* * * * *{
* * * * * *...
* * * * * *else
* * * * * *{
* * * * * * *int * arr = new int[size + addSize];
* * * * * * *for(int i = 0; i < size; ++i)
* * * * * * * arr[i] = array[i];
* * * * * * *arr[++index] = var;
* * * * * *} * 
* * * * *}
новый массив создали, а со старым чё?
Цитата Сообщение от egor2116 Посмотреть сообщение
C++
1
2
3
4
5
6
friend const Vector & operator+ (Vector & vec1, int & var)
* * * * *{
* * * * * *for(int i = 0; i < vec1.getIndex(); ++i)
* * * * * * *vec1[i] += var;
* * * * * * * return vec1;
* * * * *}
почему оператор + работает как += ? почему инт по ссылке?
Цитата Сообщение от egor2116 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
Vector & operator= (Vector & vec)
* * * * *{ 
* * * * * * * * delete [] array;
* * * * * * * * size = vec.getSize();
* * * * * * * * array = new int[size];
* * * * * * * * index = vec.getIndex();
* * * * * * * * error = vec.getError();
* * * * * * * * for(int i = 0; i < index; ++i)
* * * * * * * * * array[i] = vec[i];
* * * * * * *return *this;
* * * * *}
нет проверки на присваивание самому себе. почему vec ссылка, а не ссылка на константу?
ну глобальная проблема по всему коду: что если new бросит исключение?
0
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 80
08.01.2014, 15:51  [ТС] 20
Цитата Сообщение от Jupiter Посмотреть сообщение
ну глобальная проблема по всему коду:
а как правильнее будет?
0
08.01.2014, 15:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2014, 15:51
Помогаю со студенческими работами здесь

Возвращаемый тип конструктора копирования в абстрактном классе
Здравствуйте! Есть абстрактный класс (с &quot;чистыми&quot; виртуальными функциями), и в нем необходимо...

Как описать переменную в классе, тип которой заранее неизвестен?
Есть класс , в кот куча всяких методов, все работает, все хорошо. Но есть одно большле НО, у...

Объявление ссылки на произвольный тип в классе
Подскажите пожалуйста, как объявить ссылку в классе, а потом ей в конструкторе присвоить значение,...

Как сделать тип данных или уже есть такой тип данных который состоит из всех печатыемых символов?
Как сделать тип данных или уже есть такой тип данных который состоит из всех печатыемых символов?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru