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

Класс и конструктор с string или как использовать указатели. - C++

Восстановить пароль Регистрация
 
iojeg
 Аватар для iojeg
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 12
13.04.2012, 10:26     Класс и конструктор с string или как использовать указатели. #1
Есть такая вот ерунда

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class human
{   public:
    string name;
    string surname;
    int age;
    human(string *imya, string *familia, int vozrast):age(vozrast){
    imya.copy(name,sizeof(imya),0);
    familia.copy(surname,sizeof(familia),0);
    }
    human():age(0){
    name=' ';
    surname=' ';
    };
    void print_me();
    void write_me_to_file();
};
Вопросы:
1)можно ли пихать стринги в свои классы? =)
2)если можно,то нормально ли будет потом объект класса сувать в стэк?(фигж знает какого размера стринг и,соответственно,класс буит в следующий раз)
3)если можно все предыдущее то как конструктор сделать?(плохо ориентируюсь в указателях)
Передается в функцию тоже стринг.
з.ы.если нельзя то как удобней сделать поиск введенного массива символов в другом массиве символов(типа поиск по имени в стэке,который в итоге выдает 0 или 1)а то если сравнивать стринг и массив чар даже если в компиляторе пишется и то и то как "ololo" и "ololo" то они всеравно неравны(из-за остальных ячеек массива чар видимо?).Или только посимвольно?(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
13.04.2012, 10:32     Класс и конструктор с string или как использовать указатели. #2
Цитата Сообщение от iojeg Посмотреть сообщение
можно ли пихать стринги в свои классы?
Те самые "трусы" - это std::string? Если да, то ответ на вопрос - да.

Цитата Сообщение от iojeg Посмотреть сообщение
если можно,то нормально ли будет потом объект класса сувать в стэк?
Можно сувать std::stack< std::string >. Можно сунуть в свою реализацию стека. Как именно это уже другой вопрос.

Третий вопрос не понял.
iojeg
 Аватар для iojeg
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 12
13.04.2012, 11:10  [ТС]     Класс и конструктор с string или как использовать указатели. #3
Ну вот конструктор

C++
1
2
3
4
human(string *imya, string *familia, int vozrast):age(vozrast){
    imya.copy(name,sizeof(imya),0);
    familia.copy(surname,sizeof(familia),0);
    }
ConsoleApplication1.cpp(24): error C2228: left of '.copy' must have class/struct/union

C++
1
2
imya->copy(name,sizeof(imya),0);
    familia->copy(surname,sizeof(familia),0);
ConsoleApplication1.cpp(24): error C2664: 'std::basic_string<_Elem,_Traits,_Alloc>::copy' : cannot convert parameter 1 from 'std::string' to 'char *'

C++
1
human(string imya, string familia, int vozrast):age(vozrast){
ConsoleApplication1.cpp(24): error C2664: 'std::basic_string<_Elem,_Traits,_Alloc>::copy' : cannot convert parameter 1 from 'std::string' to 'char *'

Добавлено через 1 минуту
2й вариант это то что "посоветовал" вижуал студио 11

Добавлено через 1 минуту
Вопщем,не компилируется класс в таком виде как в 1м посте,что сделать чтоб скомпилировался? =)

Добавлено через 3 минуты
Я просто сделал вариант и стека и т.п. но с массивами char[30] а хочется сделать вариант поиска используя std::string::find() и переделать класс и прочие функции используя std::string
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
13.04.2012, 11:17     Класс и конструктор с string или как использовать указатели. #4
Цитата Сообщение от iojeg Посмотреть сообщение
Ну вот конструктор

C++
1
2
3
4
human(string *imya, string *familia, int vozrast):age(vozrast){
    imya.copy(name,sizeof(imya),0);
    familia.copy(surname,sizeof(familia),0);
    }
ConsoleApplication1.cpp(24): error C2228: left of '.copy' must have class/struct/union

C++
1
2
imya->copy(name,sizeof(imya),0);
    familia->copy(surname,sizeof(familia),0);
ConsoleApplication1.cpp(24): error C2664: 'std::basic_string<_Elem,_Traits,_Alloc>::copy' : cannot convert parameter 1 from 'std::string' to 'char *'

C++
1
human(string imya, string familia, int vozrast):age(vozrast){
ConsoleApplication1.cpp(24): error C2664: 'std::basic_string<_Elem,_Traits,_Alloc>::copy' : cannot convert parameter 1 from 'std::string' to 'char *'

Добавлено через 1 минуту
2й вариант это то что "посоветовал" вижуал студио 11

Добавлено через 1 минуту
Вопщем,не компилируется класс в таком виде как в 1м посте,что сделать чтоб скомпилировался? =)

Добавлено через 3 минуты
Я просто сделал вариант и стека и т.п. но с массивами char[30] а хочется сделать вариант поиска используя std::string::find() и переделать класс и прочие функции используя std::string
1. Студия правильно посоветовала. Доступ к методам указателя осуществляется через оепратор ->
2. Если вы переделываете на стринг то и используйте соответствующие фукции, чтобы скопиовать строку достаточно только присвоить
C++
1
name = *imya;
iojeg
 Аватар для iojeg
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 12
13.04.2012, 12:00  [ТС]     Класс и конструктор с string или как использовать указатели. #5
Опять я через *опу начал делать >_< все время то через memcpy то еще через какую фигню копировать начинаю =)
Спасибо!
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
13.04.2012, 21:59     Класс и конструктор с string или как использовать указатели. #6
и вообще используйте ссылки, зачем вам копия указателя? вам что нужен адрес?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2012, 15:09     Класс и конструктор с string или как использовать указатели.
Еще ссылки по теме:

Как использовать вектор, содержащий указатели на класс, в этом же классе? C++
C++ Как вставить в конструктор А класс В
В каком месте использовать конструктор - вне цикла или в цикле? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.04.2012, 15:09     Класс и конструктор с string или как использовать указатели. #7
Цитата Сообщение от panicwassano Посмотреть сообщение
вам что нужен адрес?
Даже если и так, его можно получить через ссылку.
Yandex
Объявления
15.04.2012, 15:09     Класс и конструктор с string или как использовать указатели.
Ответ Создать тему
Опции темы

Текущее время: 05:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru