因此,我在文件 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 是头文件中声明的类型?我回顾了我以前写过的课程,看不出我哪里出错了。我认为这可能是一个愚蠢的错误,但我没有看到它。感谢所有帮助。