Я работаю над созданием интерфейса "Array_Base", который позволит пользователю создавать либо фиксированный массив, либо расширяемый массив любого типа. Сейчас я даже не могу заставить работать обычный массив.
Я разбил проблему на несколько ее самых простых компонентов, чтобы попытаться изолировать проблему. Я считаю, что это как-то связано с моей инстанцией. Я использую Visual Studio для запуска кода.
Array_Base.h
#ifndef _ARRAY_BASE_H_
#define _ARRAY_BASE_H_
#include <cstring> // for size_t definition
template <typename T>
class Array_Base
{
public:
typedef T type;
//Default Constructor
virtual void Array_Base(void) = 0;
// Destructor.
virtual ~Array_Base(void) = 0;
protected:
/// 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_;
};
#endif // !defined _ARRAY_H_
Array.h
#ifndef _ARRAY_H_
#define _ARRAY_H_
#include <cstring> // for size_t definition
#include "Array_Base.h"
template <typename T>
class Array : public Array_Base
{
public:
/// Type definition of the element type.
typedef T type;
/// Default constructor.
Array (void);
///Destructor
~Array (void);
};
#include "Array.cpp"
#include "Array.inl"
#endif // !defined _ARRAY_H_
Array.cpp
#include <stdexcept> // for std::out_of_bounds exception
#include <iostream>
#define MAX_SIZE_ 20
template <typename T>
Array <T>::Array (void)
:data_(new T[MAX_SIZE_]),
cur_size_(0),
max_size_(MAX_SIZE_)
{ }
template <typename T>
Array <T>::~Array (void)
{
delete[] this->data_;
this->data_ = nullptr;
}
Main.cpp:
#include "Array.h"
int main(void)
{
Array_Base<int>* arr = new Array<int>();
delete arr;
}
Я продолжаю получать сообщение об ошибке: «тип значения« Массив »нельзя использовать для инициализации объекта типа« Array_Base »из красной линии, которая появляется под надписью" новый "Оператор в основном.
Любая помощь будет принята с благодарностью. Спасибо!