在Linux上编译libfacebookcpp,'StringBuilder'没有声明

compile libfacebookcpp on linux , 'StringBuilder' was not declared

本文关键字:StringBuilder 声明 Linux libfacebookcpp 编译      更新时间:2023-10-16

当编译时,会发生错误:

paginginfo.hpp:35:错误:在此范围中没有声明" StringBuilder"。

我有正确的头文件,但是为什么编译器找不到StringBuilder的扩散?

utils.hpp:

#ifndef LIBFACEBOOKCPP_UTILS_H_
#define LIBFACEBOOKCPP_UTILS_H_
template<class TData, class TStr>
inline TData fromString(const TStr &str)
{
std::stringstream oss;
oss << str;
TData t;
oss >> t;
return t;
}
class StringBuilder
{
public:
inline operator const std::string () const
{
return oss.str();
}
private:
std::ostringstream oss;
};
#endif // LIBFACEBOOKCPP_UTILS_H_

paginginfo.hpp

#ifndef LIBFACEBOOKCPP_PAGING_INFO_H_
#define LIBFACEBOOKCPP_PAGING_INFO_H_
#include "Utils.hpp"
namespace LibFacebookCpp
{
struct PagingInfo
{
PagingInfo(unsigned int offset_, unsigned int limit_) : offset(offset_), limit(limit_) { }
bool IsValid() const { return 0 != limit; }
void GetUri(Uri *uri) const
{
LIBFACEBOOKCPP_ASSERT(uri);
uri->query_params["limit"] = StringBuilder() << offset;
uri->query_params["offset"] = StringBuilder() << limit;
}
...
};
} // namespace LibFacebookCpp
#endif // LIBFACEBOOKCPP_PAGING_INFO_H_

当我添加足够的骨架代码以将其删除到您在Ideone中的问题时,我会遇到不同的错误:

prog.cpp:错误:"操作员&lt;&lt;''无匹配在'StringBuilder()&lt;&lt;(((const libfacebookcpp :: paginginfo*)这) -> libfacebookcpp :: paginginfo :: offset'

您的StringBuilder类没有A&lt;&lt;定义运算符。为了使用:

StringBuilder() << offset;

您需要定义一个。

在您和我之间,大约有15个用于弦乐的运算符(每种原始类型)。重新进化所有这些都是巨大的浪费时间。只需使用stringstream