C++ 过载<&书信电报;操作人员

C++ 过载<&书信电报;操作人员,c++,constants,overloading,output,operator-keyword,C++,Constants,Overloading,Output,Operator Keyword,当重载操作符时,我试图重载我不确定Luchian为什么删除了他的答案,因为我相信这是正确的,如果他把答案带回来,我会很乐意删除这个并增加他的投票 运营商对本序言的评估: outStream << "SET " 如果这样做行得通,但简单地将它们链接起来却不行,那么您的操作员可能会受到太严格的限制 也就是说,将免费操作符简单地实现为 std::ostream& operator <<(std::ostream& os, const Set& set1

当重载操作符时,我试图重载我不确定Luchian为什么删除了他的答案,因为我相信这是正确的,如果他把答案带回来,我会很乐意删除这个并增加他的投票

运营商对本序言的评估:

outStream << "SET "
如果这样做行得通,但简单地将它们链接起来却不行,那么您的操作员可能会受到太严格的限制

也就是说,将免费操作符简单地实现为

std::ostream& operator <<(std::ostream& os, const Set& set1)

std::ostream&operator向我们展示
测试集的主体。您能标记错误发生的准确行吗?只是为了确保。。。运算符是否在“Set.h”中声明?@LuchianGrigore每次出现@trevorhuto时都会出现,请参见下面的原因。是的,这是正确的解决方案,也不确定Luchian删除它的原因。谢谢你。@LuchianGrigore Lolz。我想你可能知道这个问题,但无论出于什么原因,都没有时间做出反应。谢谢你的投票,顺便说一句。
SetTester.cpp: In member function ‘void SetTester::testSets(Scanner&, std::ofstream&)’:
SetTester.cpp:67: error: no match for ‘operator<<’ in ‘((std::basic_ostream<char, std::char_traits<char> >*)std::operator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(&((std::ofstream*)outStream)->std::basic_ofstream<char, std::char_traits<char> >::<anonymous>)), ((const char*)"SET ")))->std::basic_ostream<_CharT, _Traits>::operator<< [with _CharT = char, _Traits = std::char_traits<char>](i) << ((SetTester*)this)->SetTester::setVector. std::vector<_Tp, _Alloc>::operator[] [with _Tp = Set, _Alloc = std::allocator<Set>](((long unsigned int)i))’
/usr/include/c++/4.2.1/ostream:112: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& (*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:121: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:131: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:169: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:177: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:185: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/bits/ostream.tcc:92: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:196: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/bits/ostream.tcc:106: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:207: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:220: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:228: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:237: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:245: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:253: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/ostream:261: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2.1/bits/ostream.tcc:120: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
Set.h:35: note:                 std::ofstream& operator<<(std::ofstream&, const Set&)
void SetTester::testSets(Scanner& inScanner, ofstream& outStream)
{
  string line;
  Set theSet; // local temp variable for input
  ScanLine scanLine;

  theSet = Set("");
  dumpSet("NULL SET", theSet, outStream);
  setVector.push_back(theSet);

  theSet = Set("1 2 3 4 1 5 6 4");
  dumpSet("TEST SET", theSet, outStream);
  setVector.push_back(theSet);

  while(inScanner.hasMoreData())
  {
    line = inScanner.nextLine();
    theSet = Set(line);
//    dumpSet("NEW SET", theSet, outStream);
    setVector.push_back(theSet);
  }

  for(UINT i = 0; i < setVector.size(); ++i)
  {
    outStream << "SET " << i << setVector[i] << endl;
  }

  for(UINT i = 0; i < setVector.size(); ++i)
  {
    for(UINT j = 0; j < setVector.size(); ++j)
    {
      Set set1 = setVector[i];
      Set set2 = setVector[j];
      outStream << "SET ONE " << i << set1 << endl;
      outStream << "SET TWO " << j << set2 << endl;

      Set setUnion = set1 + set2;
      Set setIntersection = set1 & set2;
      Set setSymDiff = set1 - set2;
      outStream << "SET UNION " << setUnion << endl;
      outStream << "SET INTER " << setIntersection << endl;
      outStream << "SET SDIFF " << setSymDiff << endl;

      if(set1 == set2)
      {
        if(!(set1 == setUnion))
        {
          outStream << "ERROR: EQUAL SETS, UNION ERROR" << endl;
        }
        else
        {
          outStream << "EQUAL SETS, UNION SUCCEEDS" << endl;
        }
        if(!(set1 == setIntersection))
        {
          outStream << "ERROR: EQUAL SETS, INTERSECTION ERROR" << endl;
        }
        else
        {
          outStream << "EQUAL SETS, INTERSECTION SUCCEEDS" << endl;
        }
      }

      outStream << endl << endl;
    }
  }

} 
ofstream& operator <<(ofstream& outputStream, const Set& set1){
ostream& operator <<(ostream& outputStream, const Set& set1){
outStream << "SET "
outStream << "SET ONE " << i ;
outStream << set1 << endl;
std::ostream& operator <<(std::ostream& os, const Set& set1)