Huster
02.04.2010, 22:23
Люди, для "усовершенствования" своих навыков программирования, попытался для класса перегрузить операторы вводы\выводы из потока ( << >> )
Есть такой простой класс
Он еще ничего не делает, только создается и удаляется.
#include<iostream>
class String
{
friend ostream& operator<<( ostream &stream, String &obj);
public:
String ( char *str); // конструктор
~String () { delete []ptr; } // деструктор
private:
int lenght;
char *ptr;
};
String::String ( char *str ) // опис. конструктора
{
if ( str == NULL || strlen(str) == 0 )
{
ptr = new char[1];
ptr[0] = '\0';
lenght = 0;
}
else
{
lenght = strlen(str);
ptr = new char[lenght];
for ( int i=0; i<lenght; i++)
ptr[i] = '0';
ptr[lenght] = '\0';
}
}
int main()
{
// тут какой то код
}
ostream& operator << (ostream &stream, String &obj)
{
// тут описание оператора ввода в поток.
}
Но это не очень важно. Важно другое. Компилятор ругается строки и выдает такое
friend ostream& operator<<( ostream &stream, String &obj);
error C2143: syntax error : missing ';' before '&'
error C2433: 'ostream' : 'friend' not permitted on data declarations
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2061: syntax error : identifier 'ostream'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2805: binary 'operator <<' has too few parameters
friend ostream& operator << (ostream &stream, String &obj)
error C2143: syntax error : missing ';' before '&'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2086: 'int ostream' : redefinition
error C2065: 'stream' : undeclared identifier
error C2065: 'obj' : undeclared identifier
error C2275: 'String' : illegal use of this type as an expression
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
fatal error C1903: unable to recover from previous error(s); stopping compilation
В чем проблема ?
p.s использую Microsoft Visual Studio 2005 Version 8.0.50727.42
p.s.p.s в Borland 3.1 все компилируется
Есть такой простой класс
Он еще ничего не делает, только создается и удаляется.
#include<iostream>
class String
{
friend ostream& operator<<( ostream &stream, String &obj);
public:
String ( char *str); // конструктор
~String () { delete []ptr; } // деструктор
private:
int lenght;
char *ptr;
};
String::String ( char *str ) // опис. конструктора
{
if ( str == NULL || strlen(str) == 0 )
{
ptr = new char[1];
ptr[0] = '\0';
lenght = 0;
}
else
{
lenght = strlen(str);
ptr = new char[lenght];
for ( int i=0; i<lenght; i++)
ptr[i] = '0';
ptr[lenght] = '\0';
}
}
int main()
{
// тут какой то код
}
ostream& operator << (ostream &stream, String &obj)
{
// тут описание оператора ввода в поток.
}
Но это не очень важно. Важно другое. Компилятор ругается строки и выдает такое
friend ostream& operator<<( ostream &stream, String &obj);
error C2143: syntax error : missing ';' before '&'
error C2433: 'ostream' : 'friend' not permitted on data declarations
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2061: syntax error : identifier 'ostream'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2805: binary 'operator <<' has too few parameters
friend ostream& operator << (ostream &stream, String &obj)
error C2143: syntax error : missing ';' before '&'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2086: 'int ostream' : redefinition
error C2065: 'stream' : undeclared identifier
error C2065: 'obj' : undeclared identifier
error C2275: 'String' : illegal use of this type as an expression
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
fatal error C1903: unable to recover from previous error(s); stopping compilation
В чем проблема ?
p.s использую Microsoft Visual Studio 2005 Version 8.0.50727.42
p.s.p.s в Borland 3.1 все компилируется