LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

Вроде обычный логгинг или дебажная печать объектов. У каждого элементарного объекта пусть будет метод sprint()

struct Point {
int x, y;
std::string sprint(int level) const
{
     std::stringstrream ss; 
     if(level == FULL)
         ss << "Point{" << x << "," << y << "}";
     else
         ss <<  x;
    return ss.str();
}
};

У каждого составного объекта будет тоже метод sprint(), в котором вызываются методы sprint() всех внутренних объектов

struct Shape {
Point a, z;
std::string sprint(int level) const
{
    std::stringstrream ss;
    if(level == FULL)
        ss << "Shape{a:" << a.sprint(level) << ", b:" << b.sprint(level) <<"}"; 
    else
       ss << b.sprint(level);
    return ss.str();
}
}

А параметром level (или назвать его по другому, если смысл другой: verbose, format) регулируется степень многословности, или формат вывода, насквозь, по всей рекурсивной иерархии вызовов sprint() объекта, начиная с самого верхнего уровня

PS. считаю, что перегружать operator<<() - излишне, особенно если печать нужно параметризировать.

Исправление Deleted, :

Вроде обычный логгинг или дебажная печать объектов. У каждого элементарного объекта пусть будет метод sprint()

struct Point {
int x, y;
std::string sprint(int level) const
{
     std::stringstrream ss; 
     if(level == FULL)
         ss << "Point{" << x << "," << y << "}";
     else
         ss <<  x;
    return ss.str();
}
};

У каждого составного объекта будет тоже метод sprint(), в котором вызываются методы sprint() всех внутренних объектов

struct Shape {
Point a, z;
std::string sprint(int level) const
{
    std::stringstrream ss;
    if(level == FULL)
        ss << "Shape{a:" << a.sprint(level) << ", b:" << b.sprint(level) <<"}"; 
    else
       ss << b.sprint(level);
    return ss.str();
}
}

А параметром level (или назвать его по другому, если смысл другой: verbose, format) регулируется степень многословности, или формат вывода, насквозь, по всей рекурсивной иерархии вызова sprint() объекта самого верхнего уровня.

PS. считаю, что перегружать operator<<() - излишне, особенно если печать нужно параметризировать.

Исправление Deleted, :

Вроде обычный логгинг или дебажная печать объектов. У каждого элементарного объекта пусть будет метод sprint()

struct Point {
int x, y;
std::string sprint(int level) const
{
     std::stringstrream ss; 
     if(level == FULL)
         ss << "Point{" << x << "," << y << "}";
     else
         ss <<  x;
    return ss.str();
}
};

У каждого составного объекта будет тоже метод sprint(), в котором вызываются методы sprint() всех внутренних объектов

struct Shape {
Point a, z;
std::string sprint(int level) const
{
    std::stringstrream ss;
    if(level == FULL)
        ss << "Shape{a:" << a.sprint(level) << ", b:" << b.sprint(level) <<"}"; 
    else
       ss << b.sprint(level);
    return ss.str();
}
}

А параметром level (или назвать его по другому, если смысл другой: verbose, format) регулируется степень многословности, или формат вывода, насквозь, по всей рекурсивной иерархии вызова sprint() объекта самого верхнего уровня.

Исходная версия Deleted, :

Вроде обычный логгинг или дебажная печать объектов. У каждого элементарного объекта пусть будет метод sprint()

struct Point {
int x, y;
std::string sprint(int level) const
{
     std::stringstrream ss; 
     if(level == FULL)
         ss << "Point{" << x << "," << y << "};
     else
         ss <<  x;
    return ss.str();
}
};

У каждого составного объекта будет тоже метод sprint(), в котором вызываются методы sprint() всех внутренних объектов

struct Shape {
Point a, z;
std::string sprint(int level) const
{
    std::stringstrream ss;
    if(level == FULL)
        ss << "Shape{a:" << a.sprint(level) << ", b:" << b.sprint(level) <<"}"; 
    else
       ss << b.sprint(level);
    return ss.str();
}
}

А параметром level (или назвать его по другому, если смысл другой: verbose, format) регулируется степень многословности, или формат вывода, насквозь, по всей рекурсивной иерархии вызова sprint() объекта самого верхнего уровня.