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

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

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

warning: ‘lectors’ is used uninitialized in this function - C++

08.02.2014, 20:53. Просмотров 1192. Ответов 4
Метки нет (Все метки)

Здравствуйте.
Делаю вот костяк программы.
Пока компилируется без ошибок, но с предупреждениями, относительно четырех указателей (как в названии темы)

Вырезки с кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include "init.hpp"
 
int main()
{
   Lector* lectors;
   Auditr* auditrs;
   Discpl* discpls;
   Group* groups;
 
   init(lectors, auditrs, discpls, groups);
   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
#include "init.hpp"
 
void init(Lector* lctrs, Auditr* audtrs, Discpl* discpls, Group* groups)
{
   cout << "\nLets add some data\n";
 
   cout << "How many lectors you want to add?\n > ";
   int lectors_to_add = 0;
   cin >> lectors_to_add;
   lctrs = add_lectors(&lectors_to_add);
 
   cout << "\nHow many auditories you want to add?\n > ";
   int auditrs_to_add;
   cin >> auditrs_to_add;
   audtrs = add_auditrs(&auditrs_to_add, &lectors_to_add, lctrs);
 
   cout << "\nHow many disciplines you want to add?\n > ";
   int discpls_to_add;
   cin >> discpls_to_add;
   discpls = add_discpls(&discpls_to_add);
 
   cout << "\nHow many groups you want to add?\n > ";
   int groups_to_add;
   cin >> groups_to_add;
   groups = add_groups(&groups_to_add);
}
 
Lector* add_lectors(int* ptr_lectors_to_add)
{
   Lector* lctrs = new Lector[*ptr_lectors_to_add]; //inner variable
   for (int i = 0; i < *ptr_lectors_to_add; ++i)
      lctrs[i].fill_up();
 
   return lctrs;
}
 
// ... и далее подобные функции
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include "types.hpp"
 
Lector* add_lectors(int*);
Auditr* add_auditrs(int*, int*, Lector*);
Discpl* add_discpls(int*);
Group* add_groups(int*);
 
void init(Lector*, Auditr*, Discpl*, Group*);
Что к чему? Как сделать их (массивы в main) инициализированными? Подозреваю, что пока то вообще не массивы, а просто указатели. Как же сделать их динамически расширяющимися, чтобы не использовать vector?


И второй вопрос:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Есть метод:
void Auditr::set_owner(int* ptr_lectors_to_add, Lector* lctrs)
{
   cout << "Who own this auditory? (enter an digit as answer)\n> ";
   for (int j = 0; j < *ptr_lectors_to_add; ++j)
   {
      cout << j + 1 << ". ";
      lctrs[j].show_name();
      cout << '\n';
   }
   int answer = 0;
   cin >> answer;
   owner = lctrs[answer - 1];
}
Почему здесь не говорится, что я пока не перегрузил оператор =, чтобы последняя инструкция выполнялась (там мой класс)?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2014, 20:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос warning: ‘lectors’ is used uninitialized in this function (C++):

Warning C4996: 'strcpy': This function or variable may be unsafe - C++
написал программу все считает , но выводит ошибку окно как сделать отладку программы? Warning 1 warning C4996: 'strcpy': This function...

Warning C4996: 'scanf': This function or variable may be unsafe - C (СИ)
#include&lt;stdio.h&gt; #include&lt;math.h&gt; void main() { int a,b,c ; printf(&quot;Enter a&quot;); scanf(&quot;%d&quot; , &amp;a); printf(&quot;Enter b&quot;); ...

Warning: mysql_connect() [function.mysql-connect]: Too many connections in /home/ - MySQL
Что значит много соединений к базе и кк просмотреть данные соединения тогда? Warning: mysql_connect() : Too many connections in /home/путь...

Warning: oci_execute() [function.ociexecute.html]: ORA-06550 - PHP БД
Добрый вечер! Ошибка (целиком): Warning: ociexecute() : ORA-06550: Строка 1, столбец 1: PLS-00103: Встретился символ &quot;&quot; в то время как...

Warning: mysql_connect() [function.mysql-connect]: Access denied for user - PHP
Здравствуйте, сегодня скачал исходник браузер. игры закинул его на хостинг зашёл на сайт игры нажал новости вышла вот такая вот ошибка ...

Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash - PHP
Добрый день. Только начал изучать регулярные выражения и решил прочитать книгу для новичков. но не смог справится с самым первым примером....

4
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.02.2014, 21:41 #2
andrejap, вы неправильно работаете с указателями. Либо нужно создать объект и в функцию передавать указатель на него, либо, если создаете объект внутри функции - передавать указатель по ссылке. Иначе вы работаете с локальной копией указателя. Почитайте про формальные и фактические аргументы функции.

Добавлено через 1 минуту
Цитата Сообщение от andrejap Посмотреть сообщение
Почему здесь не говорится, что я пока не перегрузил оператор =
система предоставляет оператор присваивания по умолчанию, который делает почленное копирование.
1
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
08.02.2014, 21:47  [ТС] #3
Tulosba, пока толком не ознакамливался с передачей аргументов. А так:
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
   Lector* lectors;
   Auditr* auditrs;
   Discpl* discpls;
   Group* groups;
 
   init(&lectors, &auditrs, &discpls, &groups);
   return 0;
}
и прототип:
C++
1
void init(Lector**, Auditr**, Discpl**, Group**);
?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.02.2014, 21:56 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от andrejap Посмотреть сообщение
пока толком не ознакамливался с передачей аргументов
документацию по русской народной привычке оставляем на потом?
Цитата Сообщение от andrejap Посмотреть сообщение
А так
Так уже похоже на правду. Но я бы разделил init на 4 разные части и возможно даже вынес бы в конструкторы соответствующих классов.
0
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
08.02.2014, 22:02  [ТС] #5
Цитата Сообщение от Tulosba Посмотреть сообщение
документацию по русской народной привычке оставляем на потом?
Язык пока учу по учебникам. Еще не дошел.

Спасибо большое за разъяснения!
0
08.02.2014, 22:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2014, 22:02
Привет! Вот еще темы с ответами:

Allvideos - Warning: preg_replace() [function.preg-replace]: Unknown modifier - Joomla
Здравствуйте! Помогите пожалуйста СРОЧНО! устранить ошибку &quot;www\plugins\content\jw_allvideos\jw_allvideos.php on line 390&quot; Я установила...

Warning: array_search() [function.array-search]: Wrong datatype for second argument in - PHP
Warning: array_search() : Wrong datatype for second argument in ... есть строка : $key = array_search( &quot;$text&quot;,&quot;$array&quot;) ; здесь...

Warning: mysql_connect() [function.mysql-connect]: Access denied for user - PHP БД
Здравствуйте. У меня тоже проблема.не могу соединить базу. Помогите пожалуйста. Это моя дипломная работа, написанная 3 года назад.теперь...

Warning: require_once [function.require-once]: failed to open stream: No such file or directory - Denwer
не получается установить сайт на денвер, пишет мне ошибку: Warning:...


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

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

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