Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

наследование от класса string, ф-я operator...

2.1K
12 августа 2009 года
Norgat
452 / / 12.08.2009
сабж... понадобился мне класс string, только с дополнительными полями...
Код:
class fstring:public string
{
public:
    sType type;
    int numb;
    fstring operator=(char* s)
    {
        string::operator =(s);
        return *this;
    }
    fstring operator=(char c)
    {
        string::operator =(c);
        return *this;
    }
    fstring operator=(string& s)
    {
        string::operator =(s);
        return *this;
    }
    fstring operator[](int i)
    {
        string::operator[](i);
        return *this;
    }
};


ф-ю operator=(...) я переопределил, но вот дальше возникли некоторые проблемы.

В Павловской написано, что для класса string доступны операции =,+,==,!=,<,<=,>,>=,[],<<,>>,+=.

Проблемка в том, что VS2008 когда набираю string:: отображает в списке полей и методов только operator=,operator[] и operator+=.

в коде же хотелось бы использовать хотя бы операторы ==,!=, причём работать они должны только с теми полями, что используются в классе string(т.е. мои поля не будут никак влиять на их работу, т.к. нужны для других вещей).

п.с. можно просто ссыль где почитать об этом поподробней.
87
12 августа 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: Norgat
сабж... понадобился мне класс string, только с дополнительными полями...



Наверное, это не очень хорошая идея наследовать от string, может лучше смотреть в сторону агрегирования. Но, если уж надо, то можно сделать проще:

Код:
#include <iostream>
#include <string>

using namespace std;

class fstring : public string
{
public:
    fstring(const char*ch):string(ch){}
    int numb;
};

int main()
{
    fstring fstr1 = "test";
    fstring fstr2 = "test";
    cout << (fstr1 == fstr2) << endl;
    cout << (fstr1 != fstr2) << endl;
    cout << fstr1 << endl;
    cout << fstr1 + '+' + fstr2 << endl;
    cout << fstr1[0] << endl;

    return 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог