【问题标题】:C++ error: output not defined in namespaceC++ 错误:命名空间中未定义输出
【发布时间】:2014-02-13 04:53:58
【问题描述】:

更新:我在下面进行了 Sergii 的更改,但现在我收到错误:未定义引用 `cs202::operator&, cs202::Rational const&)'。任何想法如何解决这一问题?谢谢

如果我能帮助我弄清楚为什么会出现此错误,我将不胜感激: “错误:‘输出’不是命名空间‘cs202’的成员”

我有一个名为 Rational 的类,如下所示:

 #ifndef RATIONAL_H
 #define RATIONAL_H

namespace cs202{

class Rational
{
private:

    int m_numerator;
    int m_denominator;

public:

    Rational(int nNumerator = 0, int nDenominator = 1) {
        m_numerator = nNumerator;
        m_denominator = nDenominator;
    }

    int getNumerator(){return m_numerator;}
    int getDenominator(){return m_denominator;}

    friend std::ostream& operator<<(std::ostream& output, const Rational& cRational);

   };
    }

    #endif

覆盖

  #include "rational.h"

  namespace cs202{

     friend std::ostream& operator<<(std::ostream& output, const Rational& cRational)
  {
      output << cRational.m_numerator << "/" << cRational.m_denominator;
     return output;
  }

  }

最后,Main 看起来像这样:

  #include <iostream>
  #include "rational.h"

  using namespace std;
  using namespace cs202;

  int main()
  {
      Rational fraction1(1, 4);

      cs202::output << fraction1 << endl;

      return 0;
  }

我尝试过使用 cout 而不是 cs202:output,我尝试过使用和不使用命名空间 cs202(这是赋值的要求),并且我尝试过使运算符重载函数成为类的成员函数而不是好友功能无济于事。

我错过了什么?谢谢

【问题讨论】:

  • 错误似乎很清楚,我没有看到 outputcs202 命名空间中的任何地方定义
  • 而不是 cs202::output,它应该是 std::cout 或 cout(如果您包含 using std 语句。
  • 请学会阅读错误信息。

标签: c++ class compiler-errors operator-overloading


【解决方案1】:

我想你希望它输出到标准输出(到控制台)

int main()
{
    Rational fraction1(1, 4);

    std::cout << fraction1 << endl;

    return 0;
}

你也不需要朋友在这里。 “朋友”关键字仅在类中使用

#include "rational.h"

namespace cs202{

std::ostream& operator<<(std::ostream& output, const Rational& cRational)
{
    output << cRational.m_numerator << "/" << cRational.m_denominator;
    return output;
}

}

【讨论】:

    【解决方案2】:

    谢谢,我想通了。我必须更改命名空间的 {} 的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多