Visual C ++致命错误C1004

时间:2017-04-27 23:33:18

标签: visual-studio visual-c++

我在VS2015中制作了一个基本的数组类。当函数代码在头文件中时,它最初工作,但现在我已将其移动到.cpp文件,我得到一个C1004:头文件的意外文件结尾。

Array.h:

    #pragma once

    template <class T> class Array
    {
    private:
        T *m_data;
        int m_length;

    public:

        Array() : m_length(0), m_data(nullptr) {}

        Array(int length) : m_length(length);

        Array(Array<T>& copyArray) : Array(copyArray.size());

        ~Array();

        void clear();

        T& at(int index);

        T& operator[](int index);

        int size();
    };

Array.cpp:

#include "Array.h"

template<typename T>
Array::Array(int length) : m_length(length)
{
    m_data = new T[m_length];
}

template<typename T>
Array::Array(Array<T>& copyArray) : Array(copyArray.size())
{
    for (int index = 0; index < copyArray.size(); ++index)
    {
        at(index) = copyArray[index];
    }
}

template<typename T>
Array::~Array()
{
    delete[] m_data;
    m_data = nullptr;
}

template<typename T>
void Array::clear()
{
    delete[] m_data;
    m_data = nullptr;
    m_length = 0;
}

template<typename T>
T& Array::at(int index)
{
    if (m_data != nullptr)
    {
        if (index < m_length && index >= 0)
        {
            return m_data[index];
        }
        throw OutOfBoundsException;
    }
    throw NullArrayException;
}

template<typename T>
T& Array::operator[](int index)
{
    if (m_data != nullptr)
    {
        if (index < m_length)
        {
            return m_data[index];
        }
        else
            throw "Out of array bounds";
    }
    else
        throw "Array is null";
}

template<typename T>
int Array::size()
{
    return m_length;
}

0 个答案:

没有答案