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 ファイルに記述しないでください。ヘッダーファイルにコードを書くこと正当化され、あなたのケースが1つではない場合、いくつかの例外があります。実装をプロジェクト内の 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 に答える