我对 C++ 比较陌生,目前正在使用向量和 ostream 进行分配,以打印出一个包含其他向量的向量。但是,当我尝试运行程序时,我目前收到此错误:
symbol not found
operator<<(std::basic_ostream<char, std::char_traits<char> >&, Hash_Table<Entry, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)", referenced from: _main in main.o
这是我的main()
代码
int main(){
Hash_Table<Entry,string> newTable(11);
// insert
Entry newEntry;
newEntry.setKey("cat");
newTable.insert(newEntry);
//print Dictionary
cout << "Dictionary contains:";
cout << newTable;
cout << '\n';
return 0;
}
这是我的Entry
课:
class Entry {
public:
Entry();
string getKey();
void setKey(string key);
int getHash(int M);
friend istream& operator>> (istream& in, Entry& right);
friend ostream& operator<< (ostream& out, const Entry& right);
private:
string data;
};
这是我的Hash_Table
课:
template <typename T,typename K>
class Hash_Table {
public:
Hash_Table(int size);
void insert(T newEntry);
T* search(K key);
void delete_entry(T* entry);
friend ostream& operator<< (ostream& out, const Hash_Table& right);
private:
vector< vector<T> > hashTable;
};
最后,这是我打印矢量的功能....
template <typename T,typename K>
ostream& operator<< (ostream& out, const Hash_Table<T,K>& right) {
for (int i=0; i < right.hashTable.size(); i++)
for (int j=0; j < right.hashTable[i].size(); j++)
out << "Slot " << i << ", Entry " << j
<< "\n" << right.hashTable[i][j] << "\n\n";
return out;
}
基本上我正在尝试实现一个字典(ADT)。哈希表是向量的向量...到目前为止,一切似乎都有效...但是我无法将向量的内容打印到控制台。我应该要打印出带有cout << newTable;
.... 的矢量,但我不断收到此错误。据我了解,我的打印功能应该可以工作......我是否忽略了什么?