У меня средний кусок кода, содержащий 5 классов, которые все они унаследованы от стандартных контейнеров.Например:
class Step : public std::vector<unsigned int>
{
public:
friend std::ostream& operator<<(std::ostream& outStream, const Step& step);
Step& operator =(const Step& rhv);
static Step fromString(const std::string &input);
std::string name;
};
Я знаю, что наследовать от стандартных контейнеров плохая идея, поэтому я собираюсь удалить все наследования, добавив подобъект родительского типа данных:
class Step
{
public:
friend std::ostream& operator<<(std::ostream& outStream, const Step& step);
Step& operator =(const Step& rhv);
static Step fromString(const std::string &input);
std::string name;
// std::vector interface:
inline std::vector<unsigned int>::const_iterator begin() const {return data.begin();}
inline std::vector<unsigned int>::const_iterator end() const {return data.end();}
inline size_t size() const {return data.size();}
typedef std::vector<unsigned int>::const_iterator const_iterator;
private:
std::vector<unsigned int> data;
};
Я делаю это потому, что код широко используется в других программах, а изменение структуры очень дорого.
И вопрос: что вы предлагаете пересмотреть код небольшими изменениями?(как можно меньше)
Уточнение: У меня есть несколько классов, унаследованных от контейнеров stl.И есть много кодов, использующих их.Мой вопрос заключается в том, как я могу удалить это злое наследство, не меняя коды с помощью этих классов?