не могу передать функции строку в СИ++

сделал все как в книге, но чет не хочет

#include <iostream>
#include <cstring>
using namespace std;
struct mystr {
    void buildstr(char* s);
    void printstr();
private:
    char str[100];
};

void mystr::buildstr(char* s) {
    if (!*s) *str = '\0';
    else strcat(str, s);
}

void mystr::printstr(){
    cout << str << endl;
}
int main() {
    mystr s;
    s.buildstr("sdfdf");
    s.buildstr("fdsf");
    s.printstr();

}

Ответы (1 шт):

Автор решения: Harry

Функция должна принимать указатель на константную строку — литерал менять нельзя...

void buildstr(const char* s);

Только это не всё — у вас str неинициализированный массив... Если компилятор позволяет, напишите

char str[100] = "";

вместо просто

char str[100];
→ Ссылка