Динамический массив, динамический конструктор - PullRequest
0 голосов
/ 21 марта 2012

Я хотел бы получить хорошую информацию о темах, упомянутых в названии.

Итак, я хотел бы получить некоторые хорошие заметки / руководства о том, как создать конструктор динамического класса и сохранить экземпляры класса в динамическом массиве, который будет определяться пользователем. Я хотел бы решить следующую проблему:

"Семья хочет управлять своими ежемесячными расходами. Чтобы выполнить эту задачу, семье необходимо заявление на хранение в течение определенного месяца всех расходов семьи. Каждый расход будет храниться в заявление через следующие элементы: день (месяца, в котором он был сделан), сумма денег и вид расходов (семья хочет сгруппировать свои расходы по следующим категориям: домашнее хозяйство, еда, транспорт, одежда, телефон и интернет, другие - книги, фильмы, спорт и т. д.). Семье нужен приложение для многократного выполнения следующих функциональных возможностей (каждая функциональность иллюстрируется): "

Спасибо. PS: я хотел бы отметить, что я новичок в c ++, но обладаю знаниями об ООП из python.

РЕДАКТИРОВАТЬ: я получил это далеко сейчас.

 class ExpC
  {
private:
int *days;
int *houseK;
int *food;
int *transp;
int *cloth;
int *telNet;
int *others;

public:
/* constructor */

ExpC()                 //Constructor
{
int *days,* houseK,*food,*transp,*cloth,*telNet,*others;
}

~ExpC()                //Deconstructor
{

}

void add(){

}

 };

Ответы [ 3 ]

2 голосов
/ 21 марта 2012

Мне кажется, что вам нужно:

1) Базовый класс - Expense.При необходимости вы можете расширить его или использовать как есть.

2) Контейнер указателей или, что еще лучше, интеллектуальные указатели на Expense объектов.Найдите std::vector или std::map, если вам нужен быстрый поиск по какому-либо аргументу.

3) Динамически создавайте новые расходы с помощью new: new Expense().

4) Добавьте кконтейнер:

std::vector<Expense*> expenses;
expenses.push_back(new Expense());

и освободите память, когда вы закончите.

РЕДАКТИРОВАТЬ:

Так как ваш код совершенно не верен, я предлагаю прочитать хорошую книгу или учебник по C ++и затем воспользуйтесь предложенным мной подходом.

1 голос
/ 21 марта 2012

Мой опыт кодирования БД говорит мне, что я должен поместить каждое из затрат в отдельную запись (объект)

Так лучше будет так

class Expence {
public:
  enum Type {k_food, k_house, k_transport /*, etc*/};

  Expence (int date, Type type, float amount) :
  date_(date),
  type_(type),
  amount_(amount)
  {}

private:
  int date_; 
  Type type_; 
  float amount_;
};

Добавьте к этому все необходимые вам методы.

Остальная часть программы будет выглядеть так, как говорит Лучиан Григоре.

Надеюсь, это поможет.

1 голос
/ 21 марта 2012

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

Исследование векторного класса STL. Вектор - это динамический массив, который может быть любого типа от базового типа данных, такого как целое число, до чего-то более сложного, такого как определенный пользователем тип данных (в вашем случае, структура расходов). Векторы исследований. Их довольно легко реализовать и использовать, если вы уже знакомы с массивами.

Но, пожалуйста, предоставьте немного больше информации о том, что вы можете и не можете делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...