0

因此,我在文件 index.h 中声明了我的类“index”:

#ifndef INDEX_H
#define INDEX_H

#include <iostream>
#include <sstream>
#include "word.h"
#include "heap.h"

using namespace std;

class index
{
public:
    index();
    ~index();
    index(const index &other);

    index& operator = (const index &other);
    void push(word<string> w);
    word<string> pop();

private:
    heap<word<string> > orchard[26];
    void nukem();
    void copy(const index &other);
};

#endif

以及随后的定义:

#include "index.h"


index::index()
{}

index::~index()
{
    nukem();
}

index::index(const index &other)
{
    copy(other);
}


index& index::operator = (const index &other)
{
    if(this != &other)
        copy(other);
    return *this;
}

void index::push(word<string> w)
{
    orchard[w.data[0]]<<w;
}

word<string> index::pop()
{
    word<string> popped;
    int i = 0;
    for(; orchard[i].empty(); i++);
    orchard[i]>>popped;
    return popped;
}

void index::nukem()
{
    for(int i = 0; i < 26; i++)
        orchard[i].clear();
}

void index::copy(const index &other)
{
    for(int i = 0; i < 26; i++)
        orchard[i] = other.orchard[i];
}

在赋值运算符的定义中,我从 xcode 得到这个编译器错误:

'&' 标记之前的预期构造函数、析构函数或类型转换

这让我认为这是一个类型问题,所以我删除了 '&' 并尝试重新编译,这在同一行给了我这个错误:

'index' 不是类型

这两个错误都出现在以下代码的第一行:

index& index::operator = (const index &other)
{
    if(this != &other)
        copy(other);
    return *this;
}

为什么编译器无法识别 index 是头文件中声明的类型?我回顾了我以前写过的课程,看不出我哪里出错了。我认为这可能是一个愚蠢的错误,但我没有看到它。感谢所有帮助。

4

0 回答 0