Тема: lvalue required as left operand
Доброго всім часу доби! Ось помилка, мабуть компілятор, напевно, не може скоріше всього працювати з покажчиком, напевно не знає мабуть з яким кроком додавати або якось так. Абсолютно не зміркую, як його красиво й гарно перевантажити, або що взагалі в цьому випадку дописати, щоб гарно і красиво.?
// spec1_the_operator_new_function1.cpp
#include <malloc.h>
#include <memory.h>
#include <stdio.h>
class Blanks
{
public:
Blanks(){}
void *operator new( size_t stAllocateBlock, char chInit );
void *Blanks::operator new( size_t stAllocateBlock, char chInit[] );
};
void *Blanks::operator new( size_t stAllocateBlock, char chInit )
{
void *pvTemp = malloc( stAllocateBlock );
if( pvTemp != 0 )
memset( pvTemp, chInit, stAllocateBlock );
return pvTemp;
}
void *Blanks::operator new( size_t stAllocateBlock, char chInit[] )
{
void *pvTemp = malloc( stAllocateBlock );
if( pvTemp == 0 ) return pvTemp;
memset( pvTemp, 0, stAllocateBlock );
while ( chInit && stAllocateBlock )
{
stAllocateBlock--; pvTemp++ = chInit++;// .cpp|29|error: lvalue required as left operand of assignment
}
return pvTemp;
}
// For discrete objects of type Blanks, the global operator new function
// is hidden. Therefore, the following code allocates an object of type
// Blanks and initializes it to 0xa5
int main()
{
Blanks *a5 = new(0xa5) Blanks;
printf("Pamjat v adresi = %d.\n" ,a5);
//printf("V adresi zaljagae = %d.\n" ,((int)(*a5));
Blanks *tsupakabra = new(0xAF5, "tsupakabra") Blanks;
printf("Pamjat v adresi = %s.\n" , (*char) tsupakabra);
return 0;
}