1

我已经创建了自己的头文件,这就是我们被要求这样做的方式,但是我应该在我的主程序中使用什么参数来调用这个头文件并创建一个数组。

我的头文件如下所示:

#ifndef ARRAY_H
#define ARRAY_H

class Array {
public:

    Array(int size) : _size(0), _arr(0) {
        // Call resize to initialize oneself
        resize(size) ;
    }

    Array(const Array& other) : _size(other._size) {
        _arr = new double[other._size] ;

        // Copy elements
        for (int i=0 ; i<_size ; i++) {
            _arr[i] = other._arr[i] ;
        }
    }

    ~Array() {
        delete[] _arr ;
    }

    Array& operator=(const Array& other)
    {
        if (&other==this) return *this ;
        if (_size != other._size) {
            resize(other._size) ;
        }
        for (int i=0 ; i<_size ; i++) {
            _arr[i] = other._arr[i] ;
        }
    }

    double& operator[](int index) {
        return _arr[index] ;
    }
    const double& operator[](int index) const {
        return _arr[index] ;
    }

    int size() const { return _size ; }

    void resize(int newSize) {
        // Allocate new array
        double* newArr = new double[newSize] ;

        // Copy elements
        for (int i=0 ; i<_size ; i++) {
            newArr[i] = _arr[i] ;
        }

        // Delete old array and install new one
        if (_arr) {
            delete[] _arr ;
        }
        _size = newSize ;
        _arr = newArr ;
    }

private:
    int _size ;
    double* _arr ;
} ;

#endif
4

2 回答 2

2
  1. 不要在 .h 文件中编写方法的实现。在头文件中编写代码合理的,而您的情况并非如此,只有少数例外。您应该将实现移动到项目中的 cpp 文件中。仔细阅读:为什么 C++ 中有头文件和 .cpp 文件?
  2. 如果要使用 .h 文件,只需编写#include "your-h-filename.h". 然后,您将能够使用 .h 文件中定义的已定义类、变量和函数。

您可能想阅读以下内容:http: //www.learncpp.com/cpp-tutorial/19-header-files/

于 2013-02-01T11:15:03.967 回答
1

在要使用此类的任何 .cpp 文件中,假设“Array.h”是 .cpp 文件中头文件的相对路径,请输入以下行:

#include "Array.h"

靠近文件顶部,在任何函数或类型声明之前。这可确保您的数组文件中的代码被视为是在该 .cpp 文件中写入的。

作为进一步说明,您通常希望将类方法的定义拆分为单独的 .cpp 文件(可能是 Array.cpp)。例如,对于resize你的头文件中的定义应该简单地更改为:

void resize(int newSize);

完整的定义应该放在 .cpp 文件中:

void Array::resize(int newSize) {
// Allocate new array
double* newArr = new double[newSize] ;

// Copy elements
for (int i=0 ; i<_size ; i++) {
  newArr[i] = _arr[i] ;
}
于 2013-02-01T11:18:50.500 回答