Во-первых, ваш оператор должен взять константную ссылку в качестве параметра:
strtype operator= (const strtype &st)
Во-вторых, оператор присваивания ожидает strtype
, а не const char*
.Для этого просто перегрузите другой оператор:
strtype& operator= (const char* c) {
str = c;
return *this;
}
Вы также хотите изменить содержимое вашего первого оператора следующим образом:
strtype& operator= (const strtype &st) {
str = st.str;
return *this;
}
Это важно, поэтому при использовании оператора присваиваниячтобы присвоить новое значение объекту strtype, вы хотите, чтобы он изменял значения, а не создавал новое.Это не будет иметь эффекта.Возвращаемое значение просто в том случае, если вы объединяете несколько назначений, поэтому оно может использовать результат одного назначения для включения в следующее.