繁体   English   中英

如何在我的主程序c ++中使用我自己制作的Array头文件?

[英]How can I use my own made Array header file in my main program c++?

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

我的头文件如下所示:

#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
  1. 不要在.h文件中编写方法的实现。 在头文件中编写代码合理的并且您的案例不是一个时,只有少数例外。 您应该将实现移动到项目内的cpp文件中。 仔细阅读: 为什么在C ++中有头文件和.cpp文件?
  2. 如果要使用.h文件,只需编写#include "your-h-filename.h" 然后,您就可以使用.h文件中定义的已定义的类,变量和函数。

您可能需要阅读: http//www.learncpp.com/cpp-tutorial/19-header-files/

在任何要使用此类的.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] ;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM