Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > массив класса


Автор: admsasha 23.2.2007, 13:43
есть файл вида
1 qwe rty 
32 asd zxc
4 sd fgh

вообщем уникальный номер, и несколько каких либо полей.

Мне надо создать стуктуру (class ?) с помощью фунции загнать в стуктуру и из другой части программы вызывать данные уже через эту стуктуру... 

Класс я создают так, в myprog.h

class spisoc{
  private:
      char a[10];
      char b[10];

}
 
из одной части программы

пишу
int main(){
   spisoc sp[10];

   <тут чтение файла и распарсивание на части>
   sp[nomer].a=a;
   sp[nomer].b=b;
}

А вот как теперь из другой части программы (из другой функции) вызвать значения ?


 smile 






Автор: JackYF 23.2.2007, 19:40
Передавай в функцию параметр класса spisok. Или массив списков.
Или я чего-то не понял?

Автор: admsasha 23.2.2007, 19:51
т.е. каждой функции которой требуется эта база передавать ссылку на базу ??

Ведь можно создать структуру из которой при необходимости могут брать данные от всех частей кода, или процедур просто объявив .h в декларация ? 

P.S. проект будет из нескольких файлов.

Добавлено @ 19:58 
типа так, то так не работает...

test.h
struct spisoc {
   public:
    int a;
    int b;
}


test.cpp
#incude "test.h"
#incude "test2.h"
int main(){
   spisoc  sp[10];
   sp[1].a=1;

   foo();
}
i

test2.cpp
#incude "test.h"
int foo(){
   spisoc  sp[10];
   сдесь должен быть вывод sp[1].a, но вывод будет "0"
}

Два файла собираются в один файл....

-----------
примерно так... только не передавать параметр, а как то подлючаться... чтоб через class модуль или еще как то...



Автор: JackYF 23.2.2007, 20:06
а где твой test2.h? (в смысле, его код в студию)

Добавлено @ 20:07 
Ну, в принципе...
1) перед main()
Код

spisok sp[10];


2) Во всех остальных файлах .cpp, которые используют:
Код

extern spisok sp[10];


Добавлено @ 20:09 
 smile 
извините за оффтоп...

Странно, такое ощущение, что я 1 на этой ветке сижу...

Автор: admsasha 23.2.2007, 20:15
Цитата(JackYF @  24.2.2007,  03:06 Найти цитируемый пост)
а где твой test2.h? (в смысле, его код в студию)


тама просто
int foo();


Цитата(JackYF @  24.2.2007,  03:06 Найти цитируемый пост)
Ну, в принципе...

Спасибо, попробую

Добавлено @ 20:17 
Цитата(JackYF @  24.2.2007,  03:06 Найти цитируемый пост)
extern spisok sp[10];

А если сразу в test.h написать ? и просто декларировать его в каждом cpp ?

Добавлено @ 20:23 
Спасибо !

вообщем то что и хотел, теперь можно коротко объяснить почему именно так ?
и можно ли extern  объявить только в одном .h и просто вызывать его ?

Автор: GrayCardinal 23.2.2007, 20:43
Спокойствие, только спокойствие  smile  smile  smile  smile 

Автор: admsasha 23.2.2007, 20:50
всё, разобрался, еще раз спасибо ! тема пока что закрыта :-)

Автор: GrayCardinal 24.2.2007, 04:01
Цитата

тема пока что закрыта 

Аминь.

Автор: admsasha 24.2.2007, 07:12
Подскажите еще, как сделать динамический массив из данного класса ?

Автор: GrayCardinal 24.2.2007, 10:30
 smile  
Меня прет, меня прет, потому-что новый год !!!  smile  smile  smile 

smile 

Автор: JackYF 24.2.2007, 16:37
из какого класса? spisok?

тогда std::vector<spisok>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)