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;
}
};
наследование от класса string, ф-я operator...
Код:
ф-ю operator=(...) я переопределил, но вот дальше возникли некоторые проблемы.
В Павловской написано, что для класса string доступны операции =,+,==,!=,<,<=,>,>=,[],<<,>>,+=.
Проблемка в том, что VS2008 когда набираю string:: отображает в списке полей и методов только operator=,operator[] и operator+=.
в коде же хотелось бы использовать хотя бы операторы ==,!=, причём работать они должны только с теми полями, что используются в классе string(т.е. мои поля не будут никак влиять на их работу, т.к. нужны для других вещей).
п.с. можно просто ссыль где почитать об этом поподробней.
Цитата: 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;
}
#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;
}