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

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

Войти
Регистрация
Восстановить пароль
 
 
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
#1

инициализация перменных в конструкторе - C++

01.09.2012, 21:27. Просмотров 813. Ответов 17
Метки нет (Все метки)

у меня есть статический вектор векторов инт(vector<vector<int>>),который мне нужно заполнить данными,но при попытке написать
C++
1
vector<vector<int>> Subscriber::_home_network_prefixes.push_back(prefix);
ничего не выходит,точка перед push_back подчёркнута красным и пишет требуется объявление
помогите понять в чём дело
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2012, 21:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос инициализация перменных в конструкторе (C++):

Инициализация char в конструкторе - C++
class Abit { public: Abit(); ~Abit(); protected: private: bool medal;

Инициализация массива в конструкторе - C++
Здравствуйте, я хотел бы узнать, возможна ли инициализация массива в конструкторе без использования циклов? Вот пример конструктора ...

Инициализация *char в конструкторе - C++
Хай эврибади! class A { private: int a; int b; char *str; public: A() : a(0), b(0) { str = '\0'; }

Инициализация указателей в конструкторе - C++
Всем привет! Вот интересный вопрос. Написано, что до вызова тела конструктора создаются поля класса. Для пользовательских типов -...

Инициализация массива char в конструкторе - C++
Вопрос такой. Есть класс simple, в классе есть поле char in. Естественно хочу инициализировать это поле в конструкторе. in={0},...

Инициализация элементов массива в конструкторе - C++
Доброго времени суток! Подскажите пожалуйста можно ли инициализировать элементы массива при помощи списка инициализации в конструкторе...

17
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
01.09.2012, 21:29 #2
Давай полный код!
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.09.2012, 21:31 #3
а что ты хочешь сказать этой строчкой? я имею ввиду зачем вот это:
C++
1
vector<vector<int>>
>> замени на > > (пробел между ними. к твоей ошибке отношения не имеет, но все равно ошибка)
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.09.2012, 21:37  [ТС] #4
класс Subscriber
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
class Subscriber
{
friend class Call;
friend class Date;
 
public:
Subscriber
(
vector<int> subscriber_number,
string subscriber
);
 
//функции для работы с абонентом
//----------------
bool AddNewCall();
bool PrintCalls();
bool DeleteCall();
bool SaveCalls();
//----------------
 
 
//функции для проверки введённых данных
//-----------------------------------------------------
bool CorrectNumber(const vector<int> &number);
bool CorrectDate(const Date &start,const Date &finish);
//-----------------------------------------------------
 
bool SetLastCostAdd();
 
//функции для определения параметров звонка
//-----------------------------------------
bool IsInsideHomeNetwork(const vector<int> &number);
Date CalculateFreeMinutes
(
const Date &call_start,//
bool IsOutgoing,//
bool inside_home_network,//
const Date &duration//
);
//-----------------------------------------
 
 
private:
vector<int> _subscriber_number;//
string _subscriber;//
 
vector<Call> _calls;//
 
Date LastCreditAdd;//
Date LastWeekend;//
 
Date free_minutes_in_home_network;//
Date free_minutes_on_weekend;//
 
static double _connection_fee;//
static double _cost_inside_home_network;//
static double _cost_outside_home_network;//
static vector<vector<int>> _home_network_prefixes;//
};


реализация
C++
1
2
3
4
5
6
int _prefix[3] = {0,9,5};
 
vector<int> prefix(_prefix,_prefix + 3);
 
 
vector<vector<int>> Subscriber::_home_network_prefixes.push_back(prefix);
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.09.2012, 21:38 #5

Не по теме:

Цитата Сообщение от novi4ok Посмотреть сообщение
>> замени на > > (пробел между ними. к твоей ошибке отношения не имеет, но все равно ошибка)
novi4ok, с++11 поддерживает >> для шаблонов


alexey31415,
Цитата Сообщение от alexey31415 Посмотреть сообщение
реализация
реализация чего? если метода класса то
C++
1
2
3
4
5
int _prefix[3] = {0,9,5};
 
vector<int> prefix(_prefix,_prefix + 3);
 
_home_network_prefixes.push_back(prefix);
1
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.09.2012, 21:44  [ТС] #6
Цитата Сообщение от Jupiter Посмотреть сообщение
_home_network_prefixes.push_back(prefix);
а разве не нужно писать в перед именем перменной имя класса и ::

и ничего не вышло,у меня переменная красным подчёркивается
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.09.2012, 21:46 #7
Цитата Сообщение от alexey31415 Посмотреть сообщение
и ничего не вышло,у меня переменная красным подчёркивается
ещё раз спрашиваю,
Цитата Сообщение от alexey31415 Посмотреть сообщение
реализация
реализация чего???

Добавлено через 31 секунду
Цитата Сообщение от alexey31415 Посмотреть сообщение
а разве не нужно писать в перед именем перменной имя класса и ::
в литературе все подробно расписано!
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.09.2012, 21:49 #8
но ты же где-нибудь этот вектор положить должен сперва, а потом уже пушить туда что-то. т.е.
C++
1
2
vector<vector<int>> Subscriber::_home_network_prefixes;
Subscriber::_home_network_prefixes.push_back(prefix);
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.09.2012, 21:54  [ТС] #9
Цитата Сообщение от Jupiter Посмотреть сообщение
реализация чего???
да это я написал,как собираюсь заполнять вектор значениями

Добавлено через 1 минуту
вот как я инициализирую статические элементы класса
C++
1
2
3
4
5
6
7
8
9
10
double Subscriber::_connection_fee = 0.33;
double Subscriber::_cost_inside_home_network = 0.5;
double Subscriber::_cost_outside_home_network = 0.95;
 
int _prefix[3] = {0,9,5};
 
vector<int> prefix(_prefix,_prefix + 3);
 
vector<vector<int>> Subscriber::_home_network_prefixes(5);
vector<vector<int>> Subscriber::_home_network_prefixes.push_back(prefix);
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.09.2012, 22:00 #10
убери
C++
1
vector<vector<int>>
из последней строки. уже третий раз сказал одно и то же, а ты как .. не знаю кто. больше не буду.
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.09.2012, 22:07  [ТС] #11
думаешь я не попробывал сразу же?
название класса подчёркивается
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
01.09.2012, 22:12 #12
В Си++ нет статических инициализаторов, афаик даже в С++11. Нельзя писать всякие .push_back() вне тел функций при глобальных определениях. Попробуйте список инициализации:
C++
1
vector<vector<int>> Subscriber::_home_network_prefixes = {1, 2, 3, 4, 5};
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.09.2012, 22:26  [ТС] #13
попробую
не помогло
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
01.09.2012, 23:03 #14
Цитата Сообщение от alexey31415 Посмотреть сообщение
попробую
не помогло
C++
1
std::vector<std::vector<int>> Subscriber::_home_network_prefixes = {{1, 2, 3, 4, 5}};
?
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
02.09.2012, 00:45 #15
выкладывай весь проект, короче.
"я тебе не верю" (с)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2012, 00:45
Привет! Вот еще темы с ответами:

Инициализация перемнных класса в конструкторе - C++
Есть ли разница между Constructor():var_1(VAL), var_2(VAL) {} и Constructor() { var_1 = VAL; var_2 = VAL; } ?

Инициализация строковых массивов в конструкторе - C++
Здравствуйте уважаемые гуру. Задачка: Нужно инициализировать массив char'ов (и пару int'ов) в конструкторе для объекта Х,а потом...

Задание размера и инициализация массива указателей в конструкторе - C++
1) h: SDL_Texture *textures; Как задать размер и инициализировать в конструкторе? Если пишу так: SDL_Texture *textures; ...

Инициализация вектора статическим массивом в конструкторе класса - C++
Доброго всем времени суток!Помогите разобраться.Есть класс.Нужно вектор заполнить из статического массива,своего рода константной таблицей....


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
02.09.2012, 00:45
Ответ Создать тему
Опции темы

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