gpt4 book ai didi

c++ - 错误消息 : 'value_type' : is not a member of

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:55 26 4
gpt4 key购买 nike

我不明白这个神秘的错误消息,但我得到了 30 个

`'value_type' : is not a member of 'TextFileLineBuffer'` 

当我在 VC++ 6 中编译以下代码时,//*** 行未注释。

当然,如果我把它注释掉,它编译得很好。

我想我在过去的两个小时里尝试了各种尝试,但都没有成功。任何提示将不胜感激。

#include <list>
#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iterator>

//wrapper for a string line
struct TextLine
{
std::string m_sLineContent;
operator std::string const& () const { return m_sLineContent; }
friend std::istream& operator>>(std::istream& stream, TextLine& line)
{
return std::getline(stream, line.m_sLineContent);
}
};

//this is a version of fixed size of string queue for easy text file reading
class TextFileLineBuffer
{
public:
TextFileLineBuffer(size_t lc, const char* fileName)
: m_iLineCount(lc), m_sFileName(fileName)
{
std::ifstream file(fileName);
//*** std::copy(std::istream_iterator<TextLine>(file),
//*** std::istream_iterator<TextLine>(),
//*** std::back_inserter(*this));
}
void push_back(std::string const& line)
{
m_sBuffer.insert(m_sBuffer.end(),line);
if (m_sBuffer.size() > m_iLineCount)
{
m_sBuffer.erase(m_sBuffer.begin());
}
}
const char* c_str() const
{
std::string returnValue("");
for (const_iterator it = begin(); it != end(); ++it)
{
returnValue = returnValue + *it;
}
return returnValue.c_str();
}
typedef std::list<std::string> Container;
typedef Container::const_iterator const_iterator;
typedef Container::const_reference const_reference;

const_iterator begin() const { return m_sBuffer.begin(); }
const_iterator end() const { return m_sBuffer.end();}

private:
size_t m_iLineCount;
std::list<std::string> m_sBuffer;
std::string m_sFileName;
};

最佳答案

根据标准 (24.5.2.1 [back.insert.iterator]),back_insert_iterator 要求您的 Container 类型包含一个 value_type typedef,它应该将(const 引用或右值引用)参数的基类型命名为 push_back:

class TextFileLineBuffer
{
public:
// ...
typedef std::string value_type;

为了与 C++98 兼容,您还应该根据 std::back_inserter needs const_reference on older GCC. Why? 定义 const_reference :

    typedef const std::string &const_reference;

关于c++ - 错误消息 : 'value_type' : is not a member of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12605324/

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