gpt4 book ai didi

C++ ostream 运算符<< "no definition"错误(仅限 Mac 构建)

转载 作者:行者123 更新时间:2023-11-30 04:17:23 25 4
gpt4 key购买 nike

我有一些代码可以在 Linux 上编译,但无法在我的 Mac 上编译。我正在用 gcc-4.2.1 编译。有问题的代码是 C++,它看起来像这样:

void print(std::ostream& os) const { os << std::string(*this) << " "; }

错误是:

error: explicit instantiation of Œstd::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, const
std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits
= std::char_traits<char>, _Alloc = std::allocator<char>]¹ but no
definition available

我知道代码有效,因为它在 Linux 上编译得很好。我无法判断 Mac 错误是由于缺少库还是可能是不同的编译器版本。我想也许我可以通过自己重载 << 运算符来修复它,但到目前为止我的尝试没有奏效。任何帮助将不胜感激!

最佳答案

I thought maybe I could fix it by overloading the << operator myself, but so far my attempts have not worked

请不要那样做。您需要的是解决根本问题:为什么 operator << 过载了?不可见?

在没有上下文的情况下很难确切地说出问题所在,但我的猜测是您没有明确包含所有必要的 header 。

确保这两个包含项都存在:

#include <string>
#include <ostream> // or <iostream> if you need both input and output

也许您在 Linux 上编译时使用的标准库的实现导入了 <string>来自 <ostream> 的 header header ,反之亦然,因此仅包含这两个 header 之一就足够了。

但是,此行为不是标准强制要求的,因此您不能依赖它。始终明确包含所有必要的 header 。

关于C++ ostream 运算符<< "no definition"错误(仅限 Mac 构建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110593/

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