что делать с этим оператором?
# include <iostream>
# include "string1.h"
using namespace std;
int main()
{
String s("check");
cout<<s;
return 0;
}
string1.cpp
# include <iostream>
# include "string1.h"
# include <cstring>
using namespace std;
String::String(char* s)
{
strcpy(sentence,s);
length=strlen(s);
}
ostream &operator<<(ostream &output,String &s)
{
output<<s.sentence;
return output;
}
main.cpp
# include <iostream>
# include "string1.h"
using namespace std;
int main()
{
String s("check");
cout<<s;
return 0;
}
ну скольлько в этом коде может быть ошибок?
но не как не 24
помогите пожалуста, вчём дело почему msvs 2005 так не любит
перегружат операторы?
# include <iostream>
# include "string1.h"
Зачем включать файл сам в себя??
string1.cpp
# include <iostream>
# include "string1.h"
# include <cstring>
using namespace std;
String::String(char* s)
{
strcpy(sentence,s);
length=strlen(s);
}
Здесь ты наверно надо так String1::String1(char* s). А ваше я не понял: ты хочешь создать свой класс String1?
Специально для туго развитых - ВСЕ ТЕЛЕПАТЫ УЕХАЛИ В ОТПУСК, НА МОРЕ. Поэтому для смертных желательно увидеть ТЕКСТ ОШИБКИ.
Что-то у них отпуск затянулся. Когда вернутся-то? :)
через ту ошибку переехали и с вашей помощю и сам спосибо.
я не новый стринг создаю я просто практикую с перегрузкой, я ведь новичёк в этом деле.
а можите сказать почему:
"binary operator+ has too many parameters"?
"binary '+' : 'String' does not define this operator or a conversion to a type acceptable to the predefined operator"
String &String::operator +(String rstr,String lstr)
{
sentence=new char [strlen(rstr.sentence)+strlen(lstr.sentence)+1];
strcpy(sentence,lstr.sentence);
strcat(sentence,rstr.sentence);
return *this;
}
где char* sentense;
Патамуша оператор_член_класа принимает на 1 параметр меньше - только правый, левым параметром является сам объект класа. Ферштейн?
я исправил всё но тут когда я проважу такую операцию
s3=s2+s1;
вроди все праходит. с кодом проблем нет.
праходит оператор = и кода возвращаетса к s3=s2+s1;
выкидывает какойто ERRROR и придлагает остановить програму
Во первых, пиши нормально, а то ты своими ошибками мне мозг разрываешь! И "какой-то Error" - скрин ошибки кинь! А то сломанный телефон - плохая информативная основа.
кажетса я нащёл ту проблему готорая тормозит меня.
вот что не нравитса компилятору:
friend ostream &operator<<(ostream&,Rational);
как только делаю такое объявление так сразу выдаётса следующее:
1) error C2143: syntax error : missing ';' before '&'
2) error C2433: 'ostream' : 'friend' not permitted on data declarations
3) error C2501: 'ostream' : missing storage-class or type specifiers
4) error C2061: syntax error : identifier 'ostream'
5) error C2501: 'Rational::operator`<<'' : missing storage-class or type specifiers
6) error C2805: binary 'operator <<' has too few parameters
7) error C2143: syntax error : missing ';' before '&'
8) error C2433: 'ostream' : 'friend' not permitted on data declarations
9) error C2501: 'ostream' : missing storage-class or type specifiers
10)error C2061: syntax error : identifier 'ostream'
11)error C2501: 'Rational::operator`<<'' : missing storage-class or type specifiers
12)error C2805: binary 'operator <<' has too few parameters
и это всё на ту одну нещастную строчку;
# ifndef ratoinal_h
# define rational_h
class rational{
friend ostream &operator<<(ostream&,Rational);
public:
.
.
.
private:
.
.
.
};
#endif
Код:
friend ostream &operator<<(ostream&,Rational);
одна типа ostream& и другая Rational типа.