1

「iterator_of_array_int.h」でこのエラーが発生しました:

#include "array_of_int.h"
#include <cstdlib>    
namespace leonidandand {
    class iterator_of_array_int
    {           
    private:
        std::size_t index;
        // next line has error
        array_of_int * ptr_to_arr;
        friend class array_of_int;
    };
}

"array_of_int.h"

#pragma once

#include <cstdlib>
#include "iterator_of_array_int.h"
namespace leonidandand {
    class array_of_int {
    public:    
        typedef iterator_of_array_int iterator;
        iterator_of_array_int begin();
        iterator_of_array_int end();
    };
}

「array_of_int.h」を含めました。どうしたの???

4

3 に答える 3

3

array_of_int.hを定義する前にarray_of_int、を含めましiterator_of_array_int.hた。したがって、コンパイラがエラー行を確認しても、名前の宣言は確認されていませんarray_of_int。エラーメッセージは、コンパイラによって発行されるより有用なメッセージの1つではありません。

私はヘッダーでクラスを前方宣言する習慣があります。必要なのはそれだけなので、行をにiterator_of_array_int.h置き換えてください。includeclass array_of_int;

于 2013-01-31T06:55:59.083 に答える
3

通常、そのエラーは、'*'の前に置いたタイプを認識しないことを意味します

于 2013-01-31T04:55:35.213 に答える
0

array_of_int.hにarray_of_int構造体/クラス定義があると仮定して、定義の最後にセミコロンがあることを確認します。タイプがコンパイラによって正しく認識されていないようです

于 2013-01-31T05:09:53.697 に答える