Дано: число N и последовательность a1, a2, … aN
Создать шаблон класса, порождающий динамические одномерные массивы с элементами различных типов (вещественные, целочисленные, символьные и т.д.). Тип данных и результат являются параметрами по отношению к классу, программа должна иметь методы инициализации, конструктор, деструктор, метод просмотра значений созданного массива, согласно заданному алгоритму.
(a1*a1), (a1*a2), …, (a1*aN);
Код
#include "stdafx.h"
#include "iostream"
using namespace std;
template <typename T>
class Mas
{
private:
T N;
T* mas;
public:
void set(T N);
void print();
};
template <typename T>
Mas<T>::Mas(T N)
{
mas = new T [N];
for(int i(0);i<=N;i++)
{
cin>>mas[i];
}
}
template <typename T>
Mas<T>::~Mas()
{
delete [] mas;
}
template <typename T>
Mas<T>::Mas()
{}
template <typename T>
void Mas<T>::set(T N)
{
mas = new T [N];
for(int i(0);i<=N;i++)
{
cin>>mas[i];
}
};
template <typename T>
void Mas<T>::print()
{
for(int i(0);i<=N;i++)
{
cout<<mas[i] = mas[1]*mas[i];
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Mas<int> a;
a.set(3);
a.print();
return 0;
}
Выдает ошибки:
Ошибка 1 error C2039: {ctor}: не является членом
"Mas<T>" c:\users\user\desktop\dz 6\dz 6\dz 6.cpp 33 1 DZ 6
Ошибка 2 error C2039: {dtor}: не является членом
"Mas<T>" c:\users\user\desktop\dz 6\dz 6\dz 6.cpp 40 1 DZ 6
Ошибка 3 error C2039: {ctor}: не является членом
"Mas<T>" c:\users\user\desktop\dz 6\dz 6\dz 6.cpp 44 1 DZ 6
Как избавится от ошибок, и правильно ли я решил задачу?
Исправил пачку ошибок, читайте комментарии в коде. Оно теперь компилируется, вроде что-то делает. Правильно или нет, не знаю, я не Ваш учитель.
#include "iostream"
using namespace std;
template <typename T>
class Mas
{
private:
T N;
T* mas;
public:
void set(T N);
void print();
Mas(T N); // нужно объявлять конструкторы и деструкторы
Mas();
~Mas();
};
template <typename T>
Mas<T>::Mas(T N)
{
mas = new T [N];
for(int i = 0; i < N; i++) // в оригинальной записи есть выход за пределы
{
cin>>mas[i];
}
}
template <typename T>
Mas<T>::~Mas()
{
delete [] mas;
}
template <typename T>
Mas<T>::Mas()
{}
template <typename T>
void Mas<T>::set(T N)
{
// эта функция может быть причиной утечек. Представьте, что ее вызвали дважды в коде
mas = new T [N];
for(int i = 0; i < N; i++)
{
cin>>mas[i];
}
};
template <typename T>
void Mas<T>::print()
{
for(int i = 0; i < N; i++)
{
//cout<<mas[i] = mas[1]*mas[i]; тут бред написан.
// если это печать, то почему она пытается изменять элементы массива?
// может просто вывести элементы?
cout << mas[i] << " ";
}
}
int main(int argc, char* argv[])
{
Mas<int> a;
a.set(3);
a.print();
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! Не подскажете, как нарисовать картинку с помощью OpenGl?
Здраствуйте помогите с программой (C++) Вводится одно число которое может быть максимум 1000 значным(соответственно его можно прочесть только...