thekiller
Viceinator
Hallo Leute,
ich hab ein Problem beim Rückgeben einer Klasse aus einer Methode heraus.
Also es gibt eine Klasse namens CosiByteArray. Wie der Name schon sagt verwaltet diese Klasse einfach ein Array ähnlich wie QByteArray in Qt.
Ich habe die Klasse soweit gestestet und sie scheint auch ohne Probleme zu funktionieren.
CosiByteArray.h
Beim Erstellen einer Instanz von CosiByteArray werden m_Data und m_Size im Konstruktor natürlich auf 0 gesetzt.
CosiByteArray möchte ich nun in einer anderen Klasse von mir verwenden.
CosiFile:
Mein Problem tritt nun in der Methode
auf.
Die Methode sieht folgendermaßen aus:
Beim Debuggen zeigt mit der QtCreator folgende Daten (siehe Screenshot)
Warum gibt mir der Debugger zwei mal DataArray an? Und warum sind m_Data und m_Size nicht 0?
Das Problem tritt übrigends nicht auf, wenn ich mit
z.B. void zurückgebe. Dann Gibt der Debugger nur einmal DataArray an und die Member sind auch mit 0 initialisiert.
An der Stelle scheinen meine C++ Kenntnisse wohl nicht mehr zu reichen.
Muss man bei CosiByteArray noch einen Konstruktor überladen oder wodran kann das liegen****
MfG Manuel
EDIT.: Ich hab nochmal ein Screenshot angehängt wo es ohne Probleme funktioniert.
ich hab ein Problem beim Rückgeben einer Klasse aus einer Methode heraus.
Also es gibt eine Klasse namens CosiByteArray. Wie der Name schon sagt verwaltet diese Klasse einfach ein Array ähnlich wie QByteArray in Qt.
Ich habe die Klasse soweit gestestet und sie scheint auch ohne Probleme zu funktionieren.
CosiByteArray.h
C++:
#ifndef CosiByteArray_H
#define CosiByteArray_H
// Standard C/C++ - Headers
#include <mem.h>
// CosiFramework - Headers
#include "CosiSimpleDataTypeDefinitions.h"
#include "CosiExcErrMsg.h"
class CosiByteArray {
private:
CosiByte *m_Data;
CosiUint64 m_Size;
void InitClass();
void CleanUpClass();
public:
CosiByteArray();
~CosiByteArray();
void SetData(CosiByte *_Data, CosiUint64 _SizeInbyte);
void SetData(CosiByteArray &_Instance);
void AppendData(CosiByte *_Data, CosiUint64 _SizeInbyte);
void DeleteData();
CosiByte* GetData();
CosiUint64 GetSize();
};
#endif // CosiByteArray_H
Beim Erstellen einer Instanz von CosiByteArray werden m_Data und m_Size im Konstruktor natürlich auf 0 gesetzt.
CosiByteArray möchte ich nun in einer anderen Klasse von mir verwenden.
CosiFile:
C++:
#ifndef COSIFILE_H
#define COSIFILE_H
// Standard C/C++ - Headers
#include <stdio.h>
// CosiFramework - Headers
#include "CosiSimpleDataTypeDefinitions.h"
#include "CosiExcErrMsg.h"
#include "CosiByteArray.h"
class CosiFile {
private:
FILE *m_FileHandle;
CosiUint64 m_FileSize;
CosiUint64 m_FilePtrPos;
bool m_FlagOpen;
void InitClass();
void CleanUpClass();
public:
CosiFile();
~CosiFile();
void OpenFile(const char *_FileName);
void CloseFile();
void WriteData(CosiByte *_Data, CosiUint64 _Size);
CosiByteArray ReadData(CosiUint64 _Size);
CosiUint64 GetFileSize();
void SetPosition(CosiUint64 _Position);
CosiUint64 GetPosition();
};
#endif // COSIFILE_H
Mein Problem tritt nun in der Methode
C++:
CosiByteArray ReadData(CosiUint64 _Size);
Die Methode sieht folgendermaßen aus:
C++:
CosiByteArray CosiFile::ReadData(CosiUint64 _Size) {
CosiByteArray DataArray;
/*
Hier passieren noch andere Operationen
*/
return DataArray;
}
Beim Debuggen zeigt mit der QtCreator folgende Daten (siehe Screenshot)
Warum gibt mir der Debugger zwei mal DataArray an? Und warum sind m_Data und m_Size nicht 0?
Das Problem tritt übrigends nicht auf, wenn ich mit
C++:
CosiByteArray ReadData(CosiUint64 _Size);
An der Stelle scheinen meine C++ Kenntnisse wohl nicht mehr zu reichen.
Muss man bei CosiByteArray noch einen Konstruktor überladen oder wodran kann das liegen****
MfG Manuel
EDIT.: Ich hab nochmal ein Screenshot angehängt wo es ohne Probleme funktioniert.
Anhänge
Zuletzt bearbeitet von einem Moderator: