класс массива шаблонов не работает должным образом - PullRequest
1 голос
/ 08 мая 2020

Класс шаблона:

#ifndef ARRAYC_H
#define ARRAYC_H
#include <iostream>

using namespace std;

template <class T> 
class Array
{
private:
    T* m_ptr;
    int m_size;
public:
    Array();
    Array(int size);

    ~Array();

    int size() const;

    bool is_Empty() const;

    T& operator[](int index);
};

#endif

и заголовок объявления класса ..

#ifndef ARRAY_H
#define ARRAY_H
#include "ArrayC.h"

using namespace std;

template <class T>
Array<T>::Array(int size) {
    if(size!=0) {
        T* m_ptr = new T[size]{};
        m_size = size;
    }
}
template <class T>
Array<T>::~Array() {
    cout <<"Deleted" << endl;
    delete [] m_ptr;
}

template <class T>
int Array<T>::size() const {
    return m_size;
}

template <class T>
bool Array<T>::is_Empty() const {
    return (m_size==0);
}

template <class T>
T& Array<T>::operator[](int index) {
    if(index< m_size) {
        return m_ptr[index];
    }
    else {
        cout <<"Index Specifed is out of Range" << endl;
        exit(0);
    }
}

#endif

программа

#include "Array.h"
#include <iostream>

using namespace std;

int main() {
    Array<int> A(2); 
    A[0] = 1;
    A[1] = 2;
    cout << A[0] << endl;
    cout << A[1] << endl;
}

компилируется и также выводит значение, но затем останавливается а затем makefile показывает ошибку.

g++ -g -std=c++17 -c -o Main.o Main.cpp
g++ -g -std=c++17 -o Execute Main.o
Execute
1
2
Deleted
Makefile:13: recipe for target 'run' failed
mingw32-make: *** [run] Error -1073741819

после того, как удаляется, он останавливается на некоторое время, а затем показывает ошибку. У цели запуска есть только один рецепт, который должен выполнить программу Execute.exe. Очень извините за такое описание, но оно не показывает никаких ошибок.

CCX_FLAGS = g++ -g -std=c++17
CCX_OF = -o
CCX_CF = -c

.PHONY : all preExwork Obclean Exclean
all : preExwork run Obclean

preExwork : 
    $(CCX_FLAGS) $(CCX_CF) $(CCX_OF) Main.o Main.cpp
    $(CCX_FLAGS) $(CCX_OF) Execute Main.o 

run :
    Execute

Obclean : 
    del /f Main.o

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