Как создать массив обьектов из шаблонных классов? Вот моя попытка.
Ошибка: ain.cpp: In function 'int main()': main.cpp:46:28: error: no matching function for call to 'Mnozhina::Mnozhina(int&)'
Mnozhina myStack(n);
^ main.cpp:13:5: note: candidate: Mnozhina::Mnozhina() [with T = int]
Mnozhina()
^~~~~~~~ main.cpp:13:5: note: candidate expects 0 arguments, 1 provided main.cpp:7:7: note: candidate: constexpr
Mnozhina::Mnozhina(const Mnozhina&) class Mnozhina
^~~~~~~~ main.cpp:7:7: note: no known conversion for argument 1 from 'int' to 'const Mnozhina&'
Mnozhina <int > myStack(n);
Я понимаю что такое <int >
если мы используем template <typename T>
Но как подобное будет выглядеть когда мы запишем template <class T>
И где в моем коде ошибки и какие. Так как в STL, я пока полный нуб.
#include <iostream>
#include <string>
using namespace std;
template <class T>
class Mnozhina
{
private:
int n;
int * arr=new int [n];
public:
Mnozhina()
{
n=10;
}
~Mnozhina();
void set_Mnozhina()
{
//cout<<"numbers of elements is here: ";
//cin>>n;
for(int i=0;i<n;i++)
{
arr[i]=2*i; // parni numbers
}
}
void get_Mnozshina()
{
cout<<"array is here =) :";
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
}
};
int main ()
{
int n;
cout<<"numbers of elements is here: ";
cin>>n;
Mnozhina <int > myStack(n);
return 0;
}
Ваша главная ошибка - отсутствие конструктора, который бы получал int
в качестве аргумента.
Далее, у вас объявлен деструктор, но не реализован.
Инициализировать arr
все же лучше в конструкторе.
Раз вы работаете с динамической памятью, нужно или написать копирующий конструктор и оператор присваивания, или их запретить.
В деструкторе надо удалять выделенную память.
Т.е. для начала - что-то вроде
template <class T>
class Mnozhina
{
private:
int n;
int * arr;
public:
Mnozhina(int n = 10):n(n),arr(new int[n])
{
set_Mnozhina();
}
~Mnozhina() { delete[] arr; }
Mnozhina(const Mnozhina&) = delete;
Mnozhina& operator=(const Mnozhina&) = delete;
void set_Mnozhina()
{
//cout<<"numbers of elements is here: ";
//cin>>n;
for(int i=0;i<n;i++)
{
arr[i]=2*i; // parni numbers
}
}
void get_Mnozshina()
{
cout<<"array is here =) :";
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
}
};
int main ()
{
int n;
cout<<"numbers of elements is here: ";
cin>>n;
Mnozhina<int> myStack(n);
myStack.get_Mnozshina();
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть код, который выводит в консоль некоторый текст:
Есть кодВ функции double f(double x[], int n) делается вычисление нескольких функций с несколькими переменными