Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разработка шаблонного класса-контейнера / 3 сообщений из 3, страница 1 из 1
01.07.2015, 14:06
    #38996895
The New Guy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка шаблонного класса-контейнера
Помогите пожалуйста разобраться! решаю задачу и не могу найти солюшен, всё очень просто, вот задача:

Необходимо разработать класс контейнера, реализующий приведенный ниже интерфейс. При разработке приветствуется использование STL.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
class ElemNotFound {};
template < class ElemType, class IndexType > class IContainer
{
public:
virtual const ElemType& GetElem( const IndexType& index ) const throw ( ElemNotFound ) = 0;
virtual void PutElem( const IndexType& index, const ElemType& elem ) throw () = 0;
};


Решение надо представить под Windows.

Я сделал эскиз, но он не компилируется студией ни в какую, и я в принципе в нем не до конца уверен, что надо изменить, что улучшить??

Код: plaintext
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.
#include "stdafx.h"
#include <string>
#include <iostream>

//class ElemNotFound {};
template <class ElemType, class IndexType> class IContainer
{
private:
ElemType arr [IndexType];
public:
IContainer() {};
IContainer(const ElemType & elem, const IndexType & index);
virtual const ElemType& GetElem( const IndexType& index ) /*const throw ( ElemNotFound ) = 0*/;
virtual void PutElem( const IndexType& index, const ElemType& elem ) /*throw () = 0*/; //первый это номер элемента в массиве, второй сам элемент
};
template<class ElemType, class IndexType=int>
IContainer<ElemType, IndexType>::IContainer(const ElemType & elem, const IndexType & index)
{
for(int i=0; i<index; i++)
arr[i]=elem;
}
template<class ElemType, class IndexType>
void IContainer<ElemType, IndexType>::PutElem(const IndexType& index, const ElemType& elem)
{
arr[index]=elem;
}
template<class ElemType, class IndexType>
const ElemType& IContainer<ElemType, IndexType>::GetElem(const IndexType & index)
{
return arr[index];
}

int main()
{
IContainer<double, int> ob (5, 7);
IContainer<std::string, int> blablabla("google", 6);
blablabla.PutElem(4, "duck");
//std::cout<<blablabla.GetElem(3);
return 0; 
}
...
Рейтинг: 0 / 0
01.07.2015, 16:09
    #38997020
The New Guy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка шаблонного класса-контейнера
все стало компилироваться, я не могу разобраться что они хотят видеть во втором параметре, зачем он нужен вот здесь


Код: plaintext
1.
2.
3.
4.
template <class ElemType, class IndexType> class IContainer
{
private:
ElemType arr [12];



и как сделать так чтобы я создавал массивы нужных мне размеров а не заданных изначально.
...
Рейтинг: 0 / 0
01.07.2015, 16:19
    #38997036
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка шаблонного класса-контейнера
The New Guy,

Попробуй применить свой класс таким образом:

Код: plaintext
1.
IContainer<double, std:string> ob;
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разработка шаблонного класса-контейнера / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]