Проблема в том, что семантически const char*
отличается от char*
. Первое не позволяет указанным данным быть измененным, что допускается для последнего.
Поскольку переменная-член является char*
по своей структуре, подразумевается, что она должна быть модифицируемой. Вы можете настроить свой код для копирования переданных данных в переменную-член или просто забыть обо всем и использовать std::string
:
class AString {
private:
std::string data;
public:
AString(const char* data) : data(data) { }
};
Чтобы скопировать данные, вам нужно получить длину через strlen
и запомнить до delete []
в деструкторе.