sorry für den kryptischen Titel. Problem ist, das der Kopierkonstruktor von QDataStream privat ist, also ein QDataStream (verständlicherweise!) nicht kopierbar ist. Nun will ich ihn auch nicht kopieren, ich will ihn erzeugen und zurückgeben...
Aber mal mit Code, dann wirds verständlicher. Ich habe ein Klasse die mir den zugriff auf ein UDP-Device kapselt und aus selbigem Datenpakete rausprokelt auf die ich mit einem QDataStream zugreifen will.
Code: Alles auswählen
class DataStreamOverUDP {
public:
bool readFromSocket(); // hier wird das socketdevice auf pakets abgefragt und selbige eingelesen
QDataStream InStream(); // hier möchte ich einen datastream auf den eingelesenen buffer ausgeben
void configureInput(const Config&); // hier wird das binden auf port und adresse usw gemacht
private:
QHostAddress m_read_hostaddress;
int m_read_port;
QUdpSocket* m_read_socketdevice;
QByteArray m_inBuffer;
};
bool DataStreamOverUDP::readFromSocket()
{
//socketdevice auf wartende datagrams fragen, buffer resizen, datagrams in den buffer einlesen
}
QDataStream DataStreamOverUDP::InStream()
{
return QDataStream(&m_inBuffer, QIODevice::ReadOnly);
}
Also sowas wie
Code: Alles auswählen
DataStreamOverUDP myUdpConnection();
// notwendige initialisierungen
myUdpConnection.readFromSocket();
QDataStream myInputStream = myUdpConnection.inStream();
inStream >> blablablabla;
‘QDataStream::QDataStream(const QDataStream&)’ is private
Aber ich will doch garnix kopieren, sondern das Objekt haben!
EDIT: Warum gibt's hier keine cpp-Code-Tags ?? Das ist ja ne Qual ohne Syntaxhervorhebung!