Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > класс String без .NET


Автор: nns2009 1.2.2009, 19:15
Я решил реализовать что-то подобное классу String из .NET с таким же именем, но компилятор выдаёт мне кучу (вроде 9) ошибок.
Подскажите, что неправильного с этим кодом?
Класс не такой уж и маленький поэтому прикреплю его к сообщению. 
Реализовал кучу всего, но подскажите как
1) компилятор требует чтобы operator= был определён не дружественной, а классовой функцией, а можно как-нибудь по другому реализовать чтобы переменной типа char* можно было свободно присваивать объект моего класса(тект в моём объекте)?
2) чтобы в функции которые требуют параметра типа char* можно было свободно передавать объект моего класса без явного(хотя бы с явным) преобразования?

Вот объявление моего класса:
Код

#include <string.h>

class String
{
public:
    enum type
    {
        const_len = 0,
        any_len = 1,
        same = 2,
    } ;

    char* text;
    int lenght;
    type TypeOfString;

    String();
    String(char* p, type tos = any_len);
    String(int len, type tos = const_len);
    String(char ch, int repeat = 1, type tos = any_len);
    String(String& str, type tos = same);

    ~String() { delete [] text; }

    int GetLenght();
    void Clean();
    bool IsEmpty(); 
    char* GetText();

    String leftSubstring(int count);
    String Substring(int first);
    String Substring(int first, int count);
    String rightSubstring(int count);

    char GetChar(int index) ;
    char& operator[](int index) ;
    void SetChar(int index, char ch);

    friend String operator=(String& ls, String& rs);
    friend String operator=(String& ls, char* rs);
    friend String operator=(char* ls, String& rs);

    friend String operator+(String& ls, String& rs);
    friend String operator+(String& ls, char* rs);
    friend String operator+(char* ls, String& rs);

    friend String operator+=(String& ls, String& rs);
    friend String operator+=(String& ls, char* rs);
    friend String operator+=(char* ls, String& rs);
}

Автор: pan2004 1.2.2009, 19:28
Первый вопрос, который приходит в голову: ознакомился ли автор этого топика с std::string?

Автор: nns2009 1.2.2009, 20:01
Цитата(pan2004 @ 1.2.2009,  19:28)
Первый вопрос, который приходит в голову: ознакомился ли автор этого топика с std::string?

нет, а что это такое?

Автор: pan2004 1.2.2009, 20:01
это я так намекаю, что велосипед делаете товарищ...

Добавлено через 1 минуту и 14 секунд
Цитата(nns2009 @  1.2.2009,  20:01 Найти цитируемый пост)
нет, а что это такое?

класс строк из стандартной библиотеки C++. По возможностям полностью покрывает написанное вами.
Подробнее ознакомится можно в учебнике по C++, или на www.cplusplus.com

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)