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

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

Войти
Регистрация
Восстановить пароль
 
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
#1

Азы классов. Подскажите, плз - C++

09.09.2013, 17:13. Просмотров 391. Ответов 10
Метки нет (Все метки)

Здравствуйте!
Помогите, пожалуйста, разобраться.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Name_pairs {
public:
    string name;
    int age;
    vector<Name_pairs> names;
 
    Name_pairs (string n, int a)
        :name(n), age(a)
        {
        }
//private:
};
 void write_pair (Name_pairs p)
    {
       Name_pairs::names.push_back(p);
    }
 
int main()
{
    Name_pairs a("Joe", 22);
    write_pair(a);
}

main.cpp:14:24: error: invalid use of non-static data member ‘Name_pairs::names’
main.cpp:24:20: error: from this location (имеется ввиду эта строчка: Name_pairs::names.push_back(p); )


Я хочу выполнить функцию, чтобы она записала данные в вектор пользовательского типа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 17:13     Азы классов. Подскажите, плз
Посмотрите здесь:

Плз подскажите - C++
плз подскажите: я учусь на 1 ом курсе,на программиста уже месяц как прохоцду c++ ,алгортимы итд я не очен хорошо понимаю...

подскажите плз - C++
дали мне задачу набросать простенький калькулятор, все работает , только когда уже открываеш экзешник как только получаеш результат и...

Подскажите плз, почему не работает - C++
Почему-то не работает цикл &quot;for&quot;. При запуске кода в консольном окне переменная &quot;h&quot; проходит от &quot;0&quot; до &quot;diametr&quot;. Но после окончания цикла...

я изучил "школьные" азы программирования на c подскажите какиенибудь несложные задачи - C++
я изучил &quot;школьные&quot; азы программирования на c подскажите какиенибудь несложные задачи вот моя игра называется быки и коровы можете в...

Где тут ошибка, подскажите плз! - C++
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; void main() { SetConsoleOutputCP(1251); ...

подскажите плз с удалением динамических массивов - C++
От кусочек , на последних строках проблема //deletename; //delete gr; без них все работает (. Нужны ли они и если да то как заставить их...

подскажите плз функцию с неограниченным количеством параметров - C++
Написать программу, которая реализует функцию с неограниченным количеством параметров, организовывающую форматированный вывод на экран....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
09.09.2013, 17:16     Азы классов. Подскажите, плз #2
vector<Name_pairs> names;
могу предположить что нужно сделать так : vector<Name_pairs*> names;
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
09.09.2013, 17:18     Азы классов. Подскажите, плз #3
C++
1
2
3
4
 void write_pair (Name_pairs& p)
    {
       p.names.push_back(p);
    }
Правда смысл этого мне совершенно не понятен. Или же names должен быть статическим (одним для всех экземпляров класса)?
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
09.09.2013, 17:24  [ТС]     Азы классов. Подскажите, плз #4
Я еще сам не до конца понял смысл.
ForEveR, Вы правы, там ссылка нужна. Да, получается, что он должен быть статическим.

vodilawofer, к сожалению я еще не знаю, что обозначает * .
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
09.09.2013, 17:26     Азы классов. Подскажите, плз #5
andrejap, Ну собственно static добавляем и все. Правда все равно довольно странно. Задание можно озвучить?
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
09.09.2013, 17:27  [ТС]     Азы классов. Подскажите, плз #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Name_pairs {
public:
    string name;
    int age;
    static vector<Name_pairs> names;
 
    Name_pairs (string n, int a)
        :name(n), age(a)
        {
        }
//private:
};
 void write_pair (Name_pairs& p)
    {
       Name_pairs::names.push_back(p);
    }
 
int main()
{
    Name_pairs a("Joe", 22);
    write_pair(a);
}
Теперь так:
/c++/u9.2/main.cpp:24: undefined reference to `Name_pairs::names'

Как я вообще вижу картину: есть класс, в нем есть статический вектор, куда записываются объекты этого типа. Вот такой объект "Joe", 22 я и пытаюсь записать в этот вектор.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
09.09.2013, 17:29     Азы классов. Подскажите, плз #7
Цитата Сообщение от andrejap Посмотреть сообщение
Как я вообще вижу картину
и всё же
Цитата Сообщение от ForEveR Посмотреть сообщение
Задание можно озвучить?
Добавлено через 50 секунд
Цитата Сообщение от andrejap Посмотреть сообщение
к сожалению я еще не знаю, что обозначает *
То есть с указателями Вы не знакомились еще?
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
09.09.2013, 17:31     Азы классов. Подскажите, плз #8
Вот так будет работать. Не было инициализации статической переменной.

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
class Name_pairs {
public:
    string name;
    int age;
    static vector<Name_pairs> names;
 
    Name_pairs (string n, int a)
        :name(n), age(a)
        {
        }
//private:
};
 
vector<Name_pairs> Name_pairs::names;
 
 void write_pair (const Name_pairs& p)
    {
       Name_pairs::names.push_back(p);
    }
 
int main()
{
    Name_pairs a("Joe", 22);
    write_pair(a);
}
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
09.09.2013, 17:35  [ТС]     Азы классов. Подскажите, плз #9
Цитата Сообщение от Croessmah Посмотреть сообщение
То есть с указателями Вы не знакомились еще?
Нет, не знакомился еще. Пока только остановился на главе 9 учебника программированию Б. Страуструпа.

Я упростил задание с книги для начала. Пока самое элементарное - хочу научиться работать с конструкторами, создать свой класс и записывать в статический вектор объекты этого класса.

Не по теме:

Потом реализую поиск элементов и т. д.



Добавлено через 2 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
vector<Name_pairs> Name_pairs::names;
статические объекты всегда нужно так инициализировать?

а что же тогда делает эта строчка?
static vector<Name_pairs> names;
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
09.09.2013, 17:40     Азы классов. Подскажите, плз #10
andrejap, Объявляет.
Если подробнее то: если объект не статический, то он инициализируется в конструкторе класса, ежели объект статический - то у него нет возможности инициализироваться в конструкторе, поэтому нужно инициализировать его явно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 17:52     Азы классов. Подскажите, плз
Еще ссылки по теме:

Подскажите плз (на каком языке программирования легче писать ПК игры?) - C++
Извините времени нету искать информацию в поисковиках . Подскажите, на каком языке программирования легче писать ПК игры. На с++ или яве...

Подскажите с конструкторами классов - C++
Напишите пожалуйста кратенькие примеры конструкторов класса. Примеры конструкторов к этому классу пожалуйста (конструктор: копирования,...

Подскажите начинающему программисту, в чем отличие структур от классов в C++ - C++
Расскажите пожалуйста начинающему программисту, в чем отличие структур от классов в C++

подскажите как првильно написать программу про наследование классов - C++
подскажите как првильно написать задачу про наследование классов вот надо написать задачу про кошку чтобы 1 пророда-сиамская ...

Помогите с задачей плз! - C++
Добрый день! Вот: вводится число n затем n чисел.Например: 8 1 1 2 3 3 3 10 10 нужно вывести: 2 1 1 2 3 3 2 10, где первые...


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

Или воспользуйтесь поиском по форуму:
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
09.09.2013, 17:52  [ТС]     Азы классов. Подскажите, плз #11
Ясно. Спасибо!
Yandex
Объявления
09.09.2013, 17:52     Азы классов. Подскажите, плз
Ответ Создать тему
Опции темы

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