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

Как передать массив в функции - C++

Восстановить пароль Регистрация
 
Wintsent
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
06.05.2013, 00:44     Как передать массив в функции #1
Здравствуйте друзья! Я переписываю достаточно большую программу с Delphi 7 на C++. Код я уже весь адаптировал, компилятор ошибок не выдает, начал тестировать и понял, что прога пока ничего не выполняет. Причина в следующем(попробую описать проблемное место):
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
.............................
const int O1sc[8] = {1,2,3,4, 5,14,15,23};//в самом начале определяю нужный массив
.................................
int kw1=8;
...............................
//Далее идут классы которые я использую, я их указал так для наглядности
class TNetOper
{
    public:
        int kW;
      
    ............
        public:
            TNetOper();
            .................
            void SetO1s(int*);
           ......................... 
            ~TNetOper();
};
....................
class TGABee
{
    public:
        
..............................
    public:
       TGABee();
 ..............................
       ~TGABee();
};
 
class TModel:public TGABee
{
    public:
.......................
 
    public:
       TModel();
......................................
       ~TModel();
                
};
 
 
 
class TGANOPUser: public TModel
{
public:
    TGANOPUser();
........................
    ~TGANOPUser();
    
};
 
TGANOPUser EA;
.......................................
int main(int argc, char** argv) {
    ...........................
    int *O1s1  = new int [kw1];
    .............................
    
    for (i=0; i<kw1; i++)
        {
          O1s1[i]=O1sc[i];
        } //перезаписываю массив
  .......................................  
cout<<"3"<<endl; // здесь просто начал отладку, "3" выводится
    EA.Net.SetO1s(O1s1);
    cout<<"4"<<endl;// "4" уже не выводится, т.е. прога перестает работать в этом методе
 
 
}
........................................
TNetOper::TNetOper()
{
...............
   kW   = kw1;
...............................
   int *O1s  = new int [kW];
......................................
 
};
 
.................................
 
void TNetOper::SetO1s(int* o1s1)
{
  int i;
  cout<<"1"<<endl;//"1" выводится
  for (i=0; i<kW; i++)
  {
      cout<<2<<endl;//"2" выводится
    O1s[i]=o1s1[i];
    cout<<"5"<<endl;//"5" не выводится
  }
  cout<<"6"<<endl;//"6" не выводится
}
.......................
TNetOper::~TNetOper()
{
//Здесь я ничего не прописывал, может тут надо что то указать???
}
 
TGABee::TGABee()
{
..............................
};
.................................

Вопрос: В чем может быть ошибка? Почему не выводится 4,5,6 ??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 00:44     Как передать массив в функции
Посмотрите здесь:

Как передать функции массив в качестве аргумента? C++
Как передать массив из одной функции в другую C++
C++ Как передать массив в функцию так, чтобы при выходе из функции он не изменялся?
C++ Как передать массив из одной функции в другую?
C++ Разные способы подключения файла, или как еще можно передать функции двумерный массив?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 684
06.05.2013, 00:52     Как передать массив в функции #2
Цитата Сообщение от Wintsent Посмотреть сообщение
cout<<2<<endl;//"2" выводится
Оно вам и не выведет. Т.к двойка без кавычек.
Wintsent
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
06.05.2013, 00:54  [ТС]     Как передать массив в функции #3
Это я сейчас опечатался, если я поставлю кавычки 2 конечно выведется, но 5 и 6 не выводятся!
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 684
06.05.2013, 00:57     Как передать массив в функции #4
Цитата Сообщение от Wintsent Посмотреть сообщение
O1s[i]=o1s1[i];
А вот эта замена для чего вам?
Wintsent
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
06.05.2013, 10:55  [ТС]     Как передать массив в функции #5
Просто перезаписываю массив. Так было реализовано в Delphi, я попытался оставить там такой же код, а потом отлаживать.

Добавлено через 9 часов 50 минут
Друзья, так в чем может быть причина подскажите!
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.05.2013, 13:03     Как передать массив в функции #6
Wintsent, вероятно у Вас O1s объявлен в классе TNetOper, но в конструкторе память выделяется под локальный O1s. Поэтому внутри SetO1s идет попытка записи в не выделенную память. По коду точно сказать нельзя, т.к. много нужного урезано.
Yandex
Объявления
06.05.2013, 13:03     Как передать массив в функции
Ответ Создать тему
Опции темы

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