Я хочу сделать это:
Array<int>* arr = new Array();
Но я продолжаю получать сообщение об ошибке: список аргументов для класса "Array" отсутствует.
Разве невозможно создать это в куче? Я не видел ни одного кода, который, кажется, делает это.
Я также попробовал другой способ, где я использую код:
Array<int>* arr;
, а затем попытался распечатать содержимоемассив, но он давал мне ошибку, что он еще не был создан. Если я не могу создать его в куче, как я могу создать его динамически. Я не знаю, что пользователь захочет вставить в него, в конце концов.
Вот весь мой код:
Array.h
#ifndef _ARRAY_H_
#define _ARRAY_H_
#include <cstring> // for size_t definition
/**
* @class Array
*
* Basic implementation of a standard array class for chars.
*/
template <typename T>
class Array
{
public:
/// Type definition of the element type.
typedef T type;
/// Default constructor.
Array (void);
private:
/// Pointer to the actual data.
T* data_;
/// Current size of the array.
size_t cur_size_;
/// Maximum size of the array.
size_t max_size_;
};
#include "Array.inl"
//#include "Array.cpp"
#endif // !defined _ARRAY_H_
Array.cpp
#include <stdexcept> // for std::out_of_bounds exception
#include <iostream>
#include "Array.h"
#define MAX_SIZE_ 20
//
// Array
// Default Constructor
template <typename T>
Array <T>::Array (void)
:data_(new T[MAX_SIZE_]),
cur_size_(0),
max_size_(MAX_SIZE_)
{ }
Array.inl
//
// size
//
template <typename T>
inline
size_t Array <T>::size(void) const
{
return this->cur_size_;
}
//
// max_size
//
template <typename T>
inline
size_t Array <T>::max_size(void) const
{
return this->max_size_;
}
driver.cpp
#include <iostream>
//#include "Array_Base.h"
#include "Array.h"
int main(void)
{
Array<int>* arr = new Array();
std::cout << "Max size of array is: " << arr->max_size() << std::endl;
}