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在定义 之前,您包含了 which array_of_int,包括iterator_of_array_int.h。因此,当编译器看到您的错误行时,它没有看到任何 name 声明array_of_int。该错误消息不是编译器发出的更有用的消息之一。

我习惯在标题中前向声明类;这就是你所需要的一切,所以用and that one's gooditerator_of_array_int.h替换include行。class 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 回答