конструкторы
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Вобще, складывается впечатление, что Евгений Александрович пытается что-то сделать, не имея представления что нужно получить в итоге. (Ну и не понимая смысл слова "конструктор").
Возьмем опсаиние класса. Нигде не указано, каков смысл полей name и value? Я могу еще предположить, что класс описывает банк, а поле bank_name - наименование этого банка.
Но что такое name и value???
Интуитивно складывается ощущение (судя по исходнику, где фигурируют слова 'onput person'), то, все-таки. требуется как-то сохранить имена клиентов банка и их некоторую "величину" (value). Но если взглянуть на описание класса, то получается, что у каждого банка предполагается ТОЛЬКО ОДИН КЛИЕНТ. Поэтому-то, как я предполаю, программа и "сходит с ума". Т.к. ее автор хочет сохранить в экземпляре класса НЕСКОЛЬКО клиентов, а сам ответ лам место ТОЛЬКО ДЛЯ ОДНОГО.
Собственно, я об этом и писал чуть выше, когда предлагал заменить name и value на массивы.
Возьмем опсаиние класса. Нигде не указано, каков смысл полей name и value? Я могу еще предположить, что класс описывает банк, а поле bank_name - наименование этого банка.
Но что такое name и value???
Интуитивно складывается ощущение (судя по исходнику, где фигурируют слова 'onput person'), то, все-таки. требуется как-то сохранить имена клиентов банка и их некоторую "величину" (value). Но если взглянуть на описание класса, то получается, что у каждого банка предполагается ТОЛЬКО ОДИН КЛИЕНТ. Поэтому-то, как я предполаю, программа и "сходит с ума". Т.к. ее автор хочет сохранить в экземпляре класса НЕСКОЛЬКО клиентов, а сам ответ лам место ТОЛЬКО ДЛЯ ОДНОГО.
Собственно, я об этом и писал чуть выше, когда предлагал заменить name и value на массивы.
-
- Сообщения: 82
- Зарегистрирован: 19 дек 2009, 16:48
поле name - клиенты. поле value - номер их счета.
И код работает как мне нужно
Т.е. Вы хотите сказать, что моя реализация в сообщении 18 совсем неправильная?
И код работает как мне нужно

Т.е. Вы хотите сказать, что моя реализация в сообщении 18 совсем неправильная?
-
- Сообщения: 270
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
Они хотят сказать вам, что нельзя использовать реквизит ради реквизита. Такое впечатление, что наличие класса здесь ради галочки...
"Он и в теретий раз..."Евгений Александрович писал(а):поле name - клиенты. поле value - номер их счета.
Ага, "клиентЫ". Все-таки, множественное число. Т.е., у одного банка (экземпляр класса bank) предполагается наличие нескольких клиентов. Евгений Александрович, быть может, Вы, все-таки, объясните, как в ОДНО поле name [экземпляра класса bank], Вы собираетесь поместить информацию о НЕСКОЛЬКИХ клиентах?
А автор сообщения #18 (по крайней мере, в настоящий момент) - Romeo.
И, боюсь, что в число int номер банковского счета не запихнете. Даже у беззнакового int максимальное значение порядка 4 миллиардов, а номера банковских счетов - 20-значные.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
BBB, ну что ж ты вопросы такие глупые задаёшь? У него ж всё работает! Евгению Александровичу сей факт куда важнее и больше греет душу, чем все наши философские размышления о том, как оно должно быть на самом деле.
Видишься чудную гексагональную конструкцию на вершине сего могучего дерева, сынок? Это наш новый дом, малыш. И не думай, что твой папка - дурак. Не смотри, что в доме входная дверь на крыше, а окна смотрят вниз. Забудь о том, что у телека кинескоп развёрнут внутрь и кровати прибиты к потолку. Это ведь дом и в нём можно жить. Мы будем в нём счастливы.
Извините за ироничную миниатюру, не удержался. Старался исключительно во благо, а не из желания поиздеваться.
Видишься чудную гексагональную конструкцию на вершине сего могучего дерева, сынок? Это наш новый дом, малыш. И не думай, что твой папка - дурак. Не смотри, что в доме входная дверь на крыше, а окна смотрят вниз. Забудь о том, что у телека кинескоп развёрнут внутрь и кровати прибиты к потолку. Это ведь дом и в нём можно жить. Мы будем в нём счастливы.
Извините за ироничную миниатюру, не удержался. Старался исключительно во благо, а не из желания поиздеваться.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Посмотрел реализацию в сообщении #19.Евгений Александрович писал(а):поле name - клиенты. поле value - номер их счета.
И код работает как мне нужно
Т.е. Вы хотите сказать, что моя реализация в сообщении 18 совсем неправильная?
И вижу, что Вы создаете (даже если закрыть глаза на то, что это делеется через Альпы) n банков, у каждого из которых по одному клиенту.
Это и есть "как мне нужно"?


Ну и "классическая" ошибка при освобождении памяти, когда был выделен массив:
delete p; // так неверно!
delete [] p; // вот так верно!
-
- Сообщения: 82
- Зарегистрирован: 19 дек 2009, 16:48
спасибо.delete [] p; // вот так верно!
Вы, наверное, правы в том, что я не совсем правильно делаю, создавая n банков.
Каким образом это делается относительно моего случая. Если можно, поподробнее.предлагал заменить name и value на массивы.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Код: Выделить всё
#include <string>
#include <vector>
class CBank
{
std::string m_strBankName;
std::vector<std::string> m_vecClientNames;
public:
...
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Или, если не связываться с std::string и std::vector<std::string>:Romeo писал(а):Код: Выделить всё
class CBank { std::string m_strBankName; std::vector<std::string> m_vecClientNames; public: ... }
Код: Выделить всё
typedef char [55] tClientName;
class tBank
{
char [44] bank_name;
tClientName * names;
int * values;
public:
...
} ;
names = new [n] tClientName;
values = new [n] int;
деструктор:
Код: Выделить всё
tBank::~tBank (void)
{ delete [] names;
delete [] values;
};
-
- Сообщения: 82
- Зарегистрирован: 19 дек 2009, 16:48
Думаю, я уловил идею. Вопрос : если я хочу сделать так, чтобы у одного человека был не 1 счет, а несколько .т.е после ввода имени спросить о кол-ве считов и ввести эти счета.
Код: Выделить всё
class bank
{
private:
char *bank_name;
char **name;
int *value;
public:
bank(){}
void add(int);
void show(int);
};
void bank::add(int n)
{
bank_name=new char[33];
cout<<"input bank_name\n"<<endl;
cin>>bank_name;
char str[55];
name=new char *[n];
value=new int [n];
for(int i=0;i<n;i++)
{
system("cls");
cout<<i<<":iput name:\n"<<endl;
cin>>str;
name[i]=new char[strlen(str)+1];
strcpy(name[i],str);
cout<<"input value:"<<endl;
cin>>value[i];
}
system("cls");
}
void bank::show(int n)
{
cout<<bank_name<<endl;
for(int i=0;i<n;i++)
cout<<name[i]<<" "<<value[i]<<endl;
delete []name;
delete []bank_name;
delete []value;
}
void main()
{
int n;
bank object;
cout<<" size (n):"<<endl;
cin>>n;
bank obj;
obj.add(n);
obj.show(n);
system("PAUSE");
}