class String{
private:
static int num_strings;
public:
int len;
char* str;
String(const char*);
~String();
ostream& operator<<(ostream&)const;
};
int String::num_strings = 0;
String::String(const char* s){
num_strings++;
len = strlen(s);
str = new char[len+1];
strcpy(str,s);
cout<<"string "<<str<<" created, "<<num_strings<<" strings left\n";
}
String::~String(){
num_strings--;
delete [] str;
cout<<"object "<<str<<" deleted, "<<num_strings<<" strings left\n";
}
ostream& String::operator<<(ostream& os)const{
os<<str;
return os;
}
int main(){
String s = "lolz";
cout<<s;
cin.get();
return 0;
}
Знаю что код неверный в плане подсчета кол-ва элементов и способен повреждать память при удалении объектов, нужно лишь понять почему при вызове перегруженного оператора << компилятор выдает кучу ошибок несовместимости типов