C/C++

Массив строк

Здравствуйте! Помогите пожалуйста решить такую задачку. Нужно сделать таблицу констант. Создал структуру внутри класса, в которой описал массив строк (для занесения типа константы). Есть процедура создания записей, есть процедура вывода на экран. Так вот, внутри процедуры создания пробовал выводить на экран массив строк - всё нормально, а вот в другой процедуре не выводится ничего. Вот структура:
struct dan_tab
{
char tip[10]; - массив строк.
dan_tab *next;
int elem;
};
dan_tab *per;
Если нужно могу кинуть обе процедуры, они не большие. Занесение самих констант организовано списком dan_tab *next, int elem; - эта часть указатели списка самих констант, char tip[10] - это массив типа констант (например int, float). И кстати список выводится в процедуре вывода на экран без проблем, загвоздка именно в массиве строк.
char tip[10] - это строка длиной 9 символов, а не массив строк.
Вопрос не совсем понятен. char tip[10] - это же вроде массив символов, а не строк. Обычно для его вывода передают указатель (pchar) на первый (т.е. tip[0]) символ, и такие С-строки должны завершаться \0 (символом с нулевым кодом) - указателем конца строки.
Цитата(Pegas @ 2:04:2007, 11:32 )
//class Table Constant
Код
Цитата(grigsoft @ 2:04:2007, 12:02 )
Неправильно. Код - каша нечитаемая. Ты его сам писал? Я тебе должен рассказать что у тебя в коде к чему? dan_tab - это данные по одной записи. Чтобы работать с набором, можно использовать динамический список (для которого у тебя есть dan_tab*next) или массов (tip_konst[10]). У тебя используются оба, причем иногда пишется в массив, иногда в список, все без головы и общего понимания смысла. Читается тоже, с ожидаемым результатом. Резюме - сесть и подумать над кодом, для каждой (!) строки самостоятельно написать комментарий что в ней делается и зачем.
Хорошо, приму к сведенью, но всё-таки есть идеи как вызвать массив tip_konst в процедуре Print_tab?
Цитата(grigsoft @ 2:04:2007, 16:42 )
У тебя массив определяется в каждой функции - и удаляется при ее выходе. Сделай его членом класса.
Тогда такой вопрос: Как структуру можно сделать членом класса? Если я вытащу из структуры этот массив символов, он не преобразуется в строку (я других способов не знаю). А можно этот массив как-то наследовать? Я пробовал у меня возникли проблемы. Примерно так:
В конце процедуры ставил - Print_tab(tip_konst[10]);
Объявлял процедуру - void Tab_Konst::Print_tab(dan_tab dannie), и дальше выводил через dannie.tip
А вот при объявлении функции-члена класса void Print_tab(dan_tab); - возникает ошибка.
Если можно, подскажите пожалуйста, каким образом наследовать массив строк в функцию-член класса?
Цитата(Pegas @ 3:04:2007, 08:20 )
Цитата(European @ 3:04:2007, 09:04 )
Цитата(Pegas @ 3:04:2007, 10:37 )
Цитата(European @ 3:04:2007, 10:42 )
Цитата(Pegas @ 3:04:2007, 10:51 )
class Tab_Konst
{
public:
char ch, buffer[4028];
int max;
Tab_Konst();
~Tab_Konst();
void Win_tab();
void Creat_tab();
struct dan_tab
{
char tip[10];
int elem;
};
void Print_tab(dan_tab);
};
И потом при вызове процедуры
void Tab_Konst::Print_tab(dannie);
Ошибка - void Print_tab(dannie); не является членом класса Tab_Konst
примерно так, я попробовал так:
class Tab_Konst
{
public:
char ch, buffer[4028];
int max;
Tab_Konst();
~Tab_Konst();
void Win_tab();
void Creat_tab();
//void Print_tab();
struct dan_tab
{
char tip[10];
int elem;
};
void Tab_Konst::Print_tab(dan_tab);
};
void Tab_Konst::Print_tab(dan_tab)
{
dan_tab Dan[10];
char ch;
int y = 7, k = 0;
...
}
но проблема не решилась
Во-первых, если хочешь чтобы тебе помогали, то форматируй текст хотя бы чуть-чуть, а также используй теги кода, а то такую кашу читать тяжело.
Во-вторых, прочти хотя бы 50 страниц книжки про объектно-ориентированное программирование.
Ну и в третьих, проще за тебя все сделать, чем объяснить:
Код
Огромное спасибо за помощь, всё работает, обязательно перечитаю ООП, оно мне тяжело даётся, но буду стараться.