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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> потоковый ввод/вывод бинарных данных, error 
:(
    Опции темы
dgolukas
Дата 15.1.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 30.8.2009

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



в классе Packet реализованы два метода

Код

std::ostringstream* createOutputStream() {
     return new std::ostringstream(_data, std::ios::binary);
    }
    
std::istringstream* createInputStream() {
    return new std::istringstream(_data, std::ios::binary);
    }


в классе PacketSender реализован метод отправки 
Код

void PacketSender::sendMessage(Socket& socket, long fromID, std::string &message)
{
    Packet *packet = new Packet();
    std::ostringstreamddjl stream = packet->createOutputStream(); //
    stream.write(fromID);
    stream.write((short)message.size());
    stream.write(message);
    sendPacket(socket, *(packet));
    std::cout<<"Message from "<<fromID<<" received: "<<message<<std::endl; 
}


в классе UserEventHandler метод приема
Код

void UserEventHandler::messageReceived(long toUserId, Packet& packet)
{
    std::istream stream = packet->createInputStream();
    long receiver;
    stream.read(&receiver, sizeof(receiver));
    short size;
    stream.read(&size, sizeof(size));
    char message[] = new char[size];
    stream.read(&message, size);
    Socket& socket = PacketDispatcher::getSocketByUserId();
    PacketSender::SendMessage(socket, toUserId, message);
    delete [] message;
}


на всех потоковых при компиляции UserEventHandler выдает такого рода ошибки. не пойму чо он хочет((((
т.е.  на каждой строчке методов

PacketSender.h: In member function ‘void PacketSender::sendMessage(Socket&, long int, std::string&)’:                        
PacketSender.h:30: error: conversion from ‘std::ostringstream*’ to non-scalar type ‘std::ostringstream’ requested            
PacketSender.h:31: error: no matching function for call to ‘std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::write(long int&)’                                                                                              
/usr/lib/gcc/x86_64-manbo-linux-gnu/4.4.1/../../../../include/c++/4.4.1/bits/ostream.tcc:182: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::write(const _CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]                                                                                             
PacketSender.h:32: error: no matching function for call to ‘std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::write(short int)’
/usr/lib/gcc/x86_64-manbo-linux-gnu/4.4.1/../../../../include/c++/4.4.1/bits/ostream.tcc:182: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::write(const _CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]
PacketSender.h:33: error: no matching function for call to ‘std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::write(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)’
/usr/lib/gcc/x86_64-manbo-linux-gnu/4.4.1/../../../../include/c++/4.4.1/bits/ostream.tcc:182: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::write(const _CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]


UserEventHandler.cpp: In member function ‘void UserEventHandler::messageReceived(long int, Packet&)’:
UserEventHandler.cpp:28: error: base operand of ‘->’ has non-pointer type ‘Packet’
UserEventHandler.cpp:30: error: no matching function for call to ‘std::basic_istream<char, std::char_traits<char> >::read(long int*, long unsigned int)’
/usr/lib/gcc/x86_64-manbo-linux-gnu/4.4.1/../../../../include/c++/4.4.1/istream:464: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::read(_CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]
UserEventHandler.cpp:32: error: no matching function for call to ‘std::basic_istream<char, std::char_traits<char> >::read(short int*, long unsigned int)’
/usr/lib/gcc/x86_64-manbo-linux-gnu/4.4.1/../../../../include/c++/4.4.1/istream:464: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::read(_CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]

PM MAIL   Вверх
17dufa
Дата 15.1.2010, 16:07 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 2.3.2006

Репутация: 3
Всего: 5



dgolukas, createOutputStream у Вас возвращает std::ostringstream* (указатель), а приравниваете Вы результат к std::ostringstream (объект), аналогично для istream.
PM MAIL   Вверх
dgolukas
Дата 16.1.2010, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 30.8.2009

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



да) это я экспериментировала, не могла понять чо хочет.  сто раз туда сюда возвращала удаляла указатели
там фишка оказалась в том, что этих классах оказался не перегружен write и read для разных типов данных. пришлось делать приведение типов. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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