0
class RLE_v1
{
struct header
{
char sig[4];
int fileSize;
unsigned char fileNameLength;
std::string fileName;
} m_Header;
RLE<char> m_Data;
public:
void CreateArchive(const std::string& source)
{
std::ifstream::pos_type size;
char* memblock;
std::ifstream file (source, std::ios::in|std::ios::binary|std::ios::ate);
if (file.is_open())
{
size = file.tellg();
memblock = new char [static_cast<unsigned int>(size)];
file.seekg (0, std::ios::beg);
file.read (memblock, size);
file.close();
//
// trying to make assignment to m_Data here.
//
delete[] memblock;
}
}
void ExtractArchive(const std::string& source);
};
我試圖以「memblock」字符數組變量M_DATA數據複製,但是當我嘗試這樣做,我得到的錯誤no match for operator "=" matches these operands
。我不知道如何讓他們平等,因爲m_Data
已經是char
類型。C++的錯誤 - 不匹配運算符=
這是具有可變M_DATA你已經證明,除了產生錯誤的實際行一切MEM
template <typename T>
struct RLE
{
T* m_Data; // Memory which stores either compressed or decompressed data
int m_Size; // Number of elements of type T that data is pointing to
RLE()
: m_Data(nullptr)
, m_Size(0)
{ }
~RLE()
{
delete m_Data;
}
};
爲什麼它應該是m.Data.m_Data?對不起,我有點困惑 – user1665569 2013-02-12 03:20:00
和是的,我正在嘗試做m_data = memblock;而產生錯誤的那一行是我說的「我試圖複製數據......」對不起。 – user1665569 2013-02-12 03:21:27
+1我猜如果通過'delete [] memblock'立即跟蹤那個指向'RLE'的指針可能會變得毫無價值。並且遵循您的Alloc建議,甚至可以使用更多主頁:'RLE :: ReadStream(ifstream&inf,size_t size)'也可以派上用場。 –
WhozCraig
2013-02-12 03:21:44