Страница 1 из 1
C++ класс вектор
Добавлено: 18 апр 2010, 20:41
tanyabars
Для созданного объекта а, разработанного класса – вектор (одномерный массив), реализовать перегрузку операции –> ( а -> ). Содержимое объекта (а, его вектора ), до и после выполнения операции, вывести на экран.
Код: Выделить всё
#include <iostream.>
#include <vector>
using namespace std;
//template <class T,int size=60>
class Vector
{
private:
int *data;
int length;
public:
Vector(int);
~Vector();
Vector *operator->();
};
Vector::Vector ()
{
length=size;
data=new T[size];
}
Vector::~Vector()
{
delete [] data;
}
Vector Vector::*operator ->(int i)
{
return data;
}
int main()
{
Vector<float,10>rf;
Vector<int,10>ri;
for(int i=0;i<10;i++)
{
rf[i]=i;
ri[i]=i*i;
}
for(i=o;i<8;i++)
{
cout<<rf[i]<<ri[i];
}
return 0;
проверьте пожалуйста
Re: C++ класс вектор
Добавлено: 18 апр 2010, 22:16
Romeo
Послушай, ты можешь нормально сказать, что от нас хочешь? Из просьбы "проверьте пожалуйста" совсем непонятно, что требуется сделать и что не получается сделать.
Re: C++ класс вектор
Добавлено: 19 апр 2010, 15:41
Dragon
Для начала подключи директиву iostream нормально

))
Либо <iostream.h> либо <iostream>.
Ну и как уже Romeo сказал, сформулируй суть проблемы

Re: C++ класс вектор
Добавлено: 20 апр 2010, 00:05
tanyabars
как правильно разработать класс вектор?
Re: C++ класс вектор
Добавлено: 20 апр 2010, 21:38
Romeo
Правильно использовать стандартный STL-евский. Либо, смотреть его код, чтобы понять, как правильно он должен быть реализован.
Re: C++ класс вектор
Добавлено: 21 апр 2010, 22:19
tanyabars
По заданию необходимо реализовать перегрузку операции -> для одномерного массива.
Выдает ошибку( left of '->data' must point to class/struct/union) пожалуйста помогите исправить.
Код: Выделить всё
#include <iostream>
#include <vector>
using namespace std;
template <class T,int size=4>class Array
{
private:
T *data;
int length;
public:
Array();
~Array();
void InArray();
void OutArray();
T *operator ->() {return data;}
};
template <class T>
Array<T>::Array()
{
length=size;
data=new T[size];
}
template <class T>
Array<T>::~Array()
{
delete []data;
}
template <class T>
void Array<T>::InArray()
{
cout << "Enter Array:" << endl;
cout << "------------" << endl;
for (int i = 0; i < 4; i++)
{
cout << i << "-element: ";
cin >> data[i];
}
cout << endl;
}
template <class T>
void Array<T>::OutArray()
{
cout << "Array: ";
for (int i = 0; i < 4; i++)
{
cout << data[i];
}
cout << endl;
}
int main()
{
Array <int>oArray_1;
oArray_1.InArray();
(oArray_1.operator ->())-> data;
oArray_1.OutArray();
return 0;
}
Re: C++ класс вектор
Добавлено: 21 апр 2010, 23:11
Romeo
Это что за ужас?
Я бы тоже ругался на месте компилятора. Оператор -> уже возвращает data. Зачем ещё раз писать data?