链接列表 - 没有运营商'<<&#火柴

时间:2015-05-13 20:25:31

标签: c++

我的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
}

3 个答案:

答案 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的向量名称。