В настоящее время я изучаю c ++, и я борюсь с примером, который предоставил наш преподаватель. Он создает новый Объект («Штрудель») и немедленно выводит его.
cout<<Strudel{"Nuss"};
это создает ошибку во время выполнения.
operator<<(basic_ostream<_CharT, _Traits>& __os,
^
/usr/...../include/c++/9/ostream:548:5: note: candidate template ignored: could not match 'const _CharT *' against 'Strudel'
operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
Я также не уверен, работает ли это вообще. Я не нашел ни одного учебника, который бы делал так, кроме того, что мы видели в классе.
#include<iostream>
using namespace std;
class Strudel{
public:
string Inhalt;
Strudel(string x):Inhalt{x}{
if(Inhalt.size()==0){
throw runtime_error("kein Name!");
}
}
ostream& print(ostream & os){
return os<<this->Inhalt<<"-Strudel";
}
};
ostream & operator<<(ostream &os, Strudel &s){
return s.print(os);
}
int main(){
Strudel x{"Mohn"};
cout<<x<<endl;
cout<<Strudel{"Nuss"};
return 0;
}