gpt4 book ai didi

c++ - 在 .h 文件外编写输出运算符重载的实现

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

我有以下 C++ 头文件:

namespace big_numbers
{
class bigint
{
private:
// private data
public:
// constructors and other methods
friend ostream & operator<<( ostream & out, const bigint & data )
{
out << data.str();
return out;
}
};
}

这是我发现声明和定义 << 的唯一方法我类的运算符,可以这样使用

bigint number("12345");
cout << number;

我尝试了一些其他的东西,但它们不起作用。我的应用程序无法编译。如何重载此运算符,在头文件中编写声明并在源文件中编写定义?

按照@DanielFrey 的回答修改代码后,我的IDE(Microsoft Visual Studio 2013)报如下错误:

Error   5   error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl BigNumbers::operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class BigNumbers::bigint const &)" (??6BigNumbers@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@ABVbigint@0@@Z) referenced in function _wmain  E:\Applications\BigNumbers\test\test.obj    test_console

最佳答案

像这样:

// header
namespace big_numbers
{
class bigint
{
private:
// private data
public:
// constructors and other methods
friend ostream & operator<<( ostream & out, const bigint & data );
};
}

// implementation
#include "bignum.hh"

namespace big_numbers
{
ostream & operator<<( ostream & out, const bigint & data )
{
out << data.str();
return out;
}
}

(假设头文件和实现文件中都正确包含...)

关于c++ - 在 .h 文件外编写输出运算符重载的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414667/

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