Форум программистов, компьютерный форум 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(){}; подробнее

Показать сообщение отдельно
Korhall
 Аватар для Korhall
7 / 7 / 1
Регистрация: 02.03.2013
Сообщений: 69
27.06.2013, 09:56     Как реализовать метод ToString?
Здравствуйте, коллеги.
Выручайте, кто может.
Я написал программу по слудеющему заданию.
Создать класс задающий данные для визитной карточки, внесенные данные потом записать в файл.
Все сделано с раздельной компиляцией: card.h - класс; met.h - описание функций; main.cpp - понятно.
Писалось в Visual stiduo 2008
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// main.cpp
#include <iostream>
#include "card.h"
#include <vector>
#include <fstream>
 
using namespace std;
 
// вывод на печать
        void viv(std::string cname, std::string clast_name, std::string ctel, std::string cemail)
        {
            std::cout << cname << "\t "
        << clast_name << " \t "
        << ctel << "\t" << cemail << "\t" << std::endl;
        }
 
// запись в файл
        void save(std::string cname, std::string clast_name, std::string ctel, std::string cemail)
        {
            
    ofstream fout;
        fout.open("base.txt", std::ios::app);
    fout << cname << " " << clast_name << " " 
        << ctel << " " << cemail; 
    fout<< std::endl;
    fout.close();
            
        }
 
int main()
{
    // Создание объекта класса visit
    
 
    std::string name;
    std::string last_name;
    std::string tel;
    std::string email;
    
    // Ввод имени с клавиатуры
    std::cout << "Name: ";
    getline(std::cin, name);
 
    // Ввод фамилии
    std::cout << "Last name: ";
    getline(std::cin, last_name);
 
    // Ввод номера телефона
    std::cout << "Telephone number: ";
    getline(std::cin, tel);
 
    // Ввод адреса электронной почты
    std::cout << "E-mail: ";
    getline(std::cin, email);
 
    //передача параметров конструктору
    
    visit card(name, last_name, tel, email);
 
    viv(name, last_name, tel, email);
    save(name, last_name, tel, email);
        // Считываем построчно записи...
    /*    vector<visit> v;
 
        v.push_back(name);
        v.push_back(last_name);
            v.push_back(tel);
            v.push_back(email);
 
        for (int i=0; i < v.size(); i++)
            cout << v[i] << " " ;
        cout << endl;
        cout << v.capacity();
        cout << endl;  */
 
 
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// card.h
#pragma once /* Защита от двойного подключения заголовочного файла */
#include <string>
#include <vector>
 
 
using namespace std;
class visit {
    public:
        // Установка имени
        void set_name(std::string);
        // Получение имени
        std::string get_name();
        // Установка фамилии
        void set_last_name(std::string);
        // Получение фамилии
        std::string get_last_name();
        // Установка номера телефона
        void set_tel(std::string);
        // Получение номера телефона
        std::string get_tel();
        // Установка адреса электронной почты
        void set_email(std::string);
        // Получение адреса электронной почты
        std::string get_email();
        //деструктор класса visit
        //visit::~visit();
        //конструктор класса visit
        visit(std::string cname, std::string clast_name, std::string ctel, std::string cemail);
        
 
    private:
        // номер телефона
        string tel;
        // адрес электронной почты
        string email;
        // Имя
        std::string name;
        // Фамилия
        std::string last_name;
 
 
 
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// met.h
#include <string>
#include "card.h"
#include <iostream>
#include <vector>
 
using namespace std;
 
// конструктор visit
    visit::visit(std::string cname, std::string clast_name, std::string ctel, std::string cemail)
    {
        visit::set_name(name);
        visit::set_last_name(last_name);
        visit::set_tel(tel);
        visit::set_email(email); 
 
    }
 
//деструктор visit
//  visit::~visit();
 
 
 
 
// Установка имени 
void visit::set_name(std::string cname)
{
    visit::name = cname;
}
 
// Получение имени 
std::string visit::get_name()
{
    return visit::name;
}
 
// Установка фамилии 
void visit::set_last_name(std::string clast_name)
{
    visit::last_name = clast_name;
}
 
// Получение фамилии
std::string visit::get_last_name()
{
    return visit::last_name;
}
 
// Установка номера телефона
void visit::set_tel(std::string ctel)
{
    visit::tel = ctel;
}
// Получение номера телефона
std::string visit::get_tel()
{
    return visit::tel;
}
// Установка адреса электронной почты
void visit::set_email(std::string cemail)
{
    visit::email = cemail;
}
// Получение номера телефона
std::string visit::get_email()
{
    return visit::email;
}
Проблема в том, что в процессе написания семестровой задание изменилось:
1)
надо реализовать вектор. Я его сделал и он работает (в main.cpp). Но пришлось его закоментить, т.к. оказалось, что я реализовал не тот вектор, который хочет видеть препод. У меня просто vector<string> а ему надо vector<visit>, т.е. вектор класса (если я правильно это называю. Если я исправляю на vector<visit> то компилятор ругается. До меня пока никак не дойдет в чем проблема. Где-то в интернете видел решение, но пповторно найти этот сайт не могу.
Подскажите, как реализовать вектор?

2) Необходимо реализовать 2 метода вывода в строку и проверки вывода. У меня просто реализован потоковый метод cout. И все замечательно работает. Но преподавателю такой подход не нравится почему-то. Должно быть что-то вроде:
C++
1
2
3
4
std::string ... tostring()
{
...
}
и
C++
1
2
3
4
bool fromstring(sring src)
{
...
}
Не удается найти какого-либо материала об этом. Подскажите, что это за операторы и как ими пользоваться.

3)
Прошу объяснить, что за проблема с деструктором. Пришлось его закоментить иначе компилятор ругается, что деструктор объявлен повторно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru