gpt4 book ai didi

C++ 错误 : output not defined in namespace

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:59 25 4
gpt4 key购买 nike

更新:我在下面做了 Sergii 的更改,但现在我得到了错误:对 `cs202::operator<<(std::basic_ostream >&, cs202::Rational const&)' 的 undefined reference 。任何想法如何解决这一问题?谢谢

如果能帮我弄清楚为什么会出现此错误,我将不胜感激:“错误:‘输出’不是命名空间‘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(这是赋值的要求),我试过使运算符重载函数成为类的成员函数而不是 friend 功能无济于事。

我错过了什么?谢谢

最佳答案

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

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

std::cout << fraction1 << endl;

return 0;
}

你也不需要这里的 friend 。 “ friend ”关键字只在一个类中使用

#include "rational.h"

namespace cs202{

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

}

关于C++ 错误 : output not defined in namespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com