Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ф-ция вывода массива в классе, Ошибка вывода собственного типа массива 
:(
    Опции темы
Voldemar2004
Дата 17.12.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



В лабе нужно реализовать класс "Разреженный массив", вот файл SparseArr.h:
Код
#include <list>

#include <string>

#include <sstream>

using namespace std;

//---------------------------------------------------------------------------

template <class DataT> class SA_item {

public:
        SA_item() : index(-1), info(DataT()) {}

        SA_item(long i, DataT d) : index(i), info(d) {}

        long index;

        DataT info;
};

//---------------------------------------------------------------------------

template <class T> class SparseArr {

public:

        SparseArr(long len) : length(len) {};

        T& operator [](long ind);

        string Show();

private:

std::list<SA_item<T> > arr;

long length;

};

//---------------------------------------------------------------------------

template <class T>
T& SparseArr<T>::operator[](long ind) {

if ( (ind < 0) || (ind > length - 1) ) {

SA_item<T> temp;
return temp.info;

}

list<SA_item<T> >::iterator i = arr.begin();
list<SA_item<T> >::iterator n = arr.end();

for (i; i != n; ++i)
        if (ind == i->index)
                return i->info;


arr.push_back(SA_item<T>(ind, T()));
i = arr.end();
return (--i)->info;

}

/* Метод Show - для вывода разреженного массива: */

template <class T>
string SparseArr<T>::Show() {

stringstream Buffer;

list<SA_item<T> >::iterator i = arr.begin();

list<SA_item<T> >::iterator n = arr.end();

for (i; i != n; ++i) Buffer << i->info << '\t';

return Buffer.str();

}


Проблема в том, что метод Show работает только для простых типов:
Код
void main(){
SparseArr<double> Numbers(2000000);

Numbers[0] = 1.1;
Numbers[38225]  =  1.2;
Numbers[2004056]  =  1.3;
Numbers[1999999]  =  1.4;
}


Если я применяю метод Show для типа Student, то вылазит ошибка: "Оператор << не применим к типу stringstream с аргументом типа Student". В чем ошибка? smile 

Код
class Student
{

public:

   char Shifr[100];           
   char Fam [100];              
   char Name [100];            
   char Otch [100];          
   char Ball[100];  

};


Это сообщение отредактировал(а) Voldemar2004 - 17.12.2006, 22:23


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
GIK
Дата 17.12.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



А где объект Numbers ?


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Sartorius
Дата 17.12.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



 Перегружать потому что нада <<.
PM MAIL ICQ   Вверх
Voldemar2004
Дата 17.12.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Цитата(Sartorius @  18.12.2006,  00:00 Найти цитируемый пост)
Перегружать потому что нада <<.
Этого я больше всего и боялся. Ладно буду перегружать. smile 



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
zkv
Дата 17.12.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



можно например так решить проблему, зависит от того что получить надо:
Код

class Student
{
public:
   char Shifr[100];           
   char Fam [100];              
   char Name [100];            
   char Otch [100];          
   char Ball[100];  
   operator char *()
   {           //здесь танец с бубном, чтобы на выходе что надо получить :)
        return Shifr;
   }
};

PM MAIL   Вверх
Voldemar2004
Дата 17.12.2006, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



GIK, Numbers - это объект типа SparseArr - об этом говорит строка:
Код
SparseArr<double> Numbers(2000000);
<double> - спецификация шаблонного класса.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
GIK
Дата 17.12.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



Цитата

GIK, Numbers - это объект типа SparseArr - об этом говорит строка:

Все, у меня едет крыша... пойду спать smile


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1338 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.