Форум программистов, компьютерный форум CyberForum.ru

Как реализовать метод ToString? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перенос на новую строку http://www.cyberforum.ru/cpp-beginners/thread913064.html
У меня довольно длинная функция класса, которая от меня то и не зависит, но нужно её вписать, строка получается длинная и хочется перенести на новую строчку часть, вот пример: MyClass.parametr1().parametr2().parametr3().parametr4().parametr5().parametr6().parametr7().parametr8(); Вообщем нечто подобная и у меня, и все операторы только dot для доступа.
C++ Функция textattr в С++ Здравствуйте. Функция которая задает одновременно цвет текста и фона. В Интернете очень мало информации про нее, обьясните как ее используют, какие параметры передают и т.п. Спасибо. http://www.cyberforum.ru/cpp-beginners/thread913060.html
Вызов функции в ребенке C++
Доброе время суток. Есть класс A и в нем есть функция void funcA(void). И есть каласс B : public A который унаследует A. Но когда я пишу в конструкторе класса B у меня выводит ошибку о нарушении прав: B::B(void) { funcA(); //здесь выводит ошибку } Но за-то если обявить класс B в каком-то мейне и там-же вызвать funcA то все нормально
C++ Изменить строку – во всех словах, имеющих нечетное количество символов, средний символ удалить
Дана строка символов. Изменить строку – во всех словах, имеющих нечетное количество символов, средний символ удалить. #include <iostream> #include <string.h> #include <cstdlib> using namespace std; char* remove_symbol( char * s) {
C++ Жадный алгоритм на графе http://www.cyberforum.ru/cpp-beginners/thread913028.html
Собственно, нужно написать программу поиска кратчайшего пути на графе "жадным методом". То есть, дан ориентированный взвешенный граф (можно и неориентированый, как получится) и у рёбер даны их длины (весы). Вывод желательно должен осуществляться в виде 3 массивов: 1 - начальная вершина, 2 - конечная вершина, 3 - вес ребра. То есть, грубо говоря, если написано "{..., A, ...}", под этим "{..., B,...
C++ Запись класса в файл Доброго времени суток! Вот появился тупик, есть базовый класс и производные классы class Figure{ protected: int x,y; TColor color; int size; int type; public: Figure(){}; подробнее

Показать сообщение отдельно
lowercase
 Аватар для lowercase
211 / 200 / 34
Регистрация: 09.05.2012
Сообщений: 494
27.06.2013, 12:23     Как реализовать метод ToString?
В таких языках как C# и Java метод toString() широко используется и служит для представления данных обьекта в виде строки. В этого метода (в выше приведенных языках) есть определнная реализация по-умолчанию (например, в java возвращается строка с полным именем класса + '@' + хеш код обьекта), которую можно свободно перепределить при надобности.

например у вас есть класс:
C++
1
2
3
4
5
6
7
8
9
10
11
class Car {
   string brand;
   string model;
   int color;
   Engine engine; // для простоты предположим что этот класс уже описан
public:
   string toString() { 
      string str = brand + ": " + model;
      return str;
   }
}
это одна из возможных реализаций этого метода. как видете вы никому не обязаны возвращать в строковом представлении полностью всю информацию которую хранит обьект, но темнеме сделать это вам тоже никто не запрещает.
будь у Engine тоже метод toString() было бы очень весело:
C++
1
2
3
4
string toString() { 
   string str = brand + ": " + model + "; color: " + nameForColor(color) + "; engine: " + engine.toString();
   return str;
}
то есть как видите реализация может быть разной. все зависит от ваших нужд. если обьект имеет очень много полей то его строковое представление будет очень громоздким, особенно если вызывать toString() для всех обьектов которые используются в текущем классе в качестве полей.
 
Текущее время: 23:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru