0

私自身の理解のために、ベクター クラスを再作成しようとしています。このコードをコンパイルしようとしているときに、Visual Studio 2013 で最近問題が発生しました。次のような「vector」キーワードごとにエラーが発生します。

ここに画像の説明を入力

これがクラス定義内の範囲エラーなのか、それとも別のエラーなのかわかりません。設定で遊んだことはありません。

 #include "../../../std_lib_facilities.h"

    class vector{
        int sz;
        double* elem; //pointer to the first element (of type double)

    public:
        vector(int s) :sz(s), //constructor - allocates s doubles , :size(s) is a 'initilization list'
            elem(new double[s])
        {
            for (int i = 0; i < s; i++)
                elem[i] = 0; //initialize elements

        }

        int size() const
        {
            return sz;
        }

        //read
        double get(int n)
        {
            return elem[n];
        }

        //write
        void set(int n, double v)
        {
            elem[n] = v;
        }


        //Every class that owns a resource needs a destructor
        ~vector() //destructor
        {
            delete[] elem; // free memory
        }

    };


    int main(int argc)
    {
        vector v(5);
        for (int i = 0; i < v.size(); i++){
            v.set(i, i);
            cout << "v[" << i << "]==" << v.get(i) << '\n';
        }
        system("PAUSE");

    }

さらに情報が必要な場合は、お気軽にお問い合わせください。

4

2 に答える 2

1

オンラインで検索しているときに、次の行を含むヘッダー ファイルを見つけました。

// disgusting macro hack to get a range checked vector:
#define vector Vector

なぜそれを使用しているのかわかりませんが、これが問題の原因です。

ベクトルを使用するために必要なことは、#include <vector>

Vector明確にするために、ヘッダー ファイルはと呼ばれるベクトル クラスを作成し、 の#defineすべての初期化vectorが実際にこのVectorクラスを参照するようにします。

クラスの名前を変更すると、この問題が解消されます。

余談ですが、このヘッダー ファイルは恐ろしいものです。使用するときは注意してください。

于 2013-10-31T21:22:47.823 に答える