我的c ++真的很差。无论如何使用代码片段下面为什么我会在<<<<<<<<<<在do while循环中,当它外面我没有得到任何错误。错误是:没有操作员"<<&#;匹配这些操作数。然而,字符串w选择了罚款这个词。我读到某个地方我可能要超载它,但为什么呢?我将如何过载它以获取链接列表。 提前谢谢。
void print()
{
HashTable *marker = headOne;
HashTable *inList;
for( int i = 0; i < tableSize; i++ )
{
cout << i << ": " << marker->number << endl;
if(marker->child != NULL)
{
inList = marker;
do
{
string w = inList->word;
cout << w << endl;
inList = inList->child;
}
while(inList != NULL);
}
marker = marker->next;
}//end for loop
}
答案 0 :(得分:0)
为了cout
std::string
您必须包含:
#include <string>
#include <iostream>
答案 1 :(得分:0)
这有效:
// Missing includes and using
#include <string>
#include <iostream>
using namespace std;
// missing struct
struct HashTable {
HashTable* next;
HashTable* child;
string word;
int number;
};
// missing vars
HashTable ht;
HashTable* headOne = &ht;
int tableSize = 5;
// Unchanged
void print()
{
HashTable *marker = headOne;
HashTable *inList;
for( int i = 0; i < tableSize; i++ )
{
cout << i << ": " << marker -> number << endl;
if(marker->child != NULL)
{
inList = marker;
do
{
string w = inList -> word;
cout << w << endl;
inList = inList -> child;
}
while(inList != NULL);
}
marker = marker -> next;
}//end for loop
}
答案 2 :(得分:0)
我读到某个地方我可能要超载它,但为什么?
因为没有符合您需要的超载。
我如何过度加载链接列表。
您可以在课堂或结构之外执行此操作:
(其中T
是您要打印的对象的类型)
std::ostream& operator<<(std::ostream& os, const T& obj)
{
/* write obj to stream */
return os;
}
这只是打印矢量的示例:
std::ostream& operator<<(std::ostream& os, vector<int>& obj)
{
for (auto &i : obj)
os << i << " ";
return os;
}
然后我就可以简单地执行此操作cout << n.vec;
其中n
是类对象,vec
是int的向量名称。