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