Мое разочарование в связи с этой проблемой в значительной степени усугубляется интенсивным использованием вектора в качестве панацеи во всех других решениях.
Позвольте мне предвосхитить эту проблему, сказав, что мне НЕОБХОДИМО использовать указатели, какими бы раздражающими они ни были, для решения этой проблемы. Я не могу использовать вектор, поскольку он не был рассмотрен в нашем материале курса.
Я привык к следующему формату для объявления указателя на массив.
int* numbers;
numbers= new int[10];
Bin go Я только что создал массив с десятью элементами, которые могут хранить целые числа. Woot!
Теперь я пытаюсь создать указатель на массив объектов, а не только на любые объекты!
У меня есть два класса. Один называется Аккаунт, а другой - Транзакция. В закрытых членах моего класса Account мне нужно сделать «Указатель на массив транзакций, используемый для отслеживания всех транзакций, выполненных для этой учетной записи». Почему я так поступаю? Удиви меня до чертиков, вот инструкции, которые мне дали, и я просто скопировал их в раздел Личный кабинет пользователя.
Вот как я пытался это сделать:
class Account
{
private:
static const int MAX_TRANS = 100;
int mAcctType;
int mNumTrans;
double mAcctBal;
std::string mAcctName;
Transaction* transaction;
transaction = new Transaction[MAX_TRANS];
void allocate();
void deallocate();
void copy(const Account& account);
public:
static const int CHECKING = 0;
static const int SAVINGS = 1;
Я не могу понять, что я сделал неправильно, но получаю несколько сообщений об ошибках.
Первое в этом разделе:
` Transaction* transaction;
transaction = new Transaction[MAX_TRANS];`
Я получаю красный волнистый знак под транзакцией, указатель, который я сейчас пытаюсь создать, в которой говорится, что в объявлении нет класса хранения или спецификатора типа Msgstr "". Ну, почему это не тип транзакции?
Далее я получаю следующие сообщения об ошибках.
C2143 syntax error: missing ';' before '*'
C2238 unexpected token(s) preceding ';'
C4430 missing type specifier - int assumed. Note: C++ does not support default-int
Вот полный код для моего класса транзакций:
#ifndef TRANSACTION_H
#define TRANSACTION_H
#include"Account.h"
#include <iostream>
#include <string>
class Transaction
{
private:
int mTransType;
double mTransAmt;
public:
static const int DEPOSIT = 1;
static const int WITHDRAW = 0;
Transaction();
Transaction(int mTransType, double mTransAmt);
int GetTransType() { return mTransType; };
double GetTransAmt() { return mTransAmt; };
friend std::ostream &operator<<(std::ostream& out, Transaction transaction);
};
#endif
Я не могу понять, почему мы делаем это таким образом, я уверен, что многим это кажется абсурдным из вас.
Все, что мне нужно знать, - это правильный синтаксис объявления указателя на массив объектов в закрытых членах другого класса.