Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
iojeg
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 12
#1

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

13.04.2012, 10:26. Просмотров 868. Ответов 6
Метки нет (Все метки)

Есть такая вот ерунда

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" то они всеравно неравны(из-за остальных ячеек массива чар видимо?).Или только посимвольно?(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2012, 10:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс и конструктор с string или как использовать указатели. (C++):

Как использовать вектор, содержащий указатели на класс, в этом же классе? - C++
Возникла необходимость обращения к объекту класса внутри класса с помощью вектора, содержащего указатели на объекты этого класса. ...

String в классе (конструктор): когда стоит применять указатели и динамическое выделение памяти? - C++
Добрый вечер всем. Я вот начал писать для себя одну программку по книжке Стэнли Липманна, в общем хочу понять кое-что: предположим, у меня...

Как использовать функции string::find или функция strstr(str1 ,str2) - C++
как использовать функции string::find или функция strstr(str1 ,str2) Добавлено через 3 минуты вернее какой у них синтаксис привдети...

Undefined reference или передача string в конструктор класса - C++
Собственно проблема на этапе компиляции в main.cpp на 19 строке. Не понимаю, почему он требует 4 аргумента, когда у меня в объявлении...

В каком месте использовать конструктор - вне цикла или в цикле? - C++
Добрый день! Как писать правильнее? Ниже два примера: QStringList data; foreach(const QString &category, categories) { data...

Куда деваются одномоментные указатели, или управление памятью в работе с std::string - C++
Здравствуйте! Положим, у нас есть функция, возвращающая строку std::string, выглядящая как-то так: std::string getHome() { ...

6
Евгений М.
1037 / 978 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
13.04.2012, 10:32 #2
Цитата Сообщение от iojeg Посмотреть сообщение
можно ли пихать стринги в свои классы?
Те самые "трусы" - это std::string? Если да, то ответ на вопрос - да.

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

Третий вопрос не понял.
1
iojeg
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 12
13.04.2012, 11:10  [ТС] #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
0
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
13.04.2012, 11:17 #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;
1
iojeg
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 12
13.04.2012, 12:00  [ТС] #5
Опять я через *опу начал делать >_< все время то через memcpy то еще через какую фигню копировать начинаю =)
Спасибо!
0
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
13.04.2012, 21:59 #6
и вообще используйте ссылки, зачем вам копия указателя? вам что нужен адрес?
0
silent_1991
Эксперт С++
4993 / 3051 / 149
Регистрация: 11.11.2009
Сообщений: 7,038
Завершенные тесты: 1
15.04.2012, 15:09 #7
Цитата Сообщение от panicwassano Посмотреть сообщение
вам что нужен адрес?
Даже если и так, его можно получить через ссылку.
0
15.04.2012, 15:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2012, 15:09
Привет! Вот еще темы с ответами:

Объясните, каким образом программа могла бы использовать класс string, не прибегая к объявлению using - C++
Объясните, каким образом программа могла бы использовать класс string, не прибегая к объявлению using.

Что лучше использовать: string или char[]? - C++
Ребят, я только начинаю учить c++. Подскажите что лучше использовать string или же char

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

Что лучше использовать для строк? Массив char или же string? - C++
Только не давно начал изучать с++, подскажите что лучше использовать для строк? Массив char или же string? И могу я ограничить себя...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.