【发布时间】:2016-06-03 04:30:46
【问题描述】:
我已经实现了一个类buffer_manger。下面给出了头文件(.hpp)和(.cpp)文件。
buffer_manager.hpp
#ifndef BUFFER_MANAGER_H
#define BUFFER_MANAGER_H
#include <iostream>
#include <exception>
#include <boost/array.hpp>
#include <boost/algorithm/hex.hpp>
#include <algorithm>
#include <iomanip>
class buffer_manager
{
public:
typedef boost::array<unsigned char, 4096> m_array_type;
m_array_type recv_buf;
buffer_manager();
~buffer_manager();
std::string message_buffer(m_array_type &recv_buf);
m_array_type get_recieve_array();
private:
std::string message;
};
#endif //BUFFER_MANAGER_H
buffer_manager.cpp
#include <iostream>
#include <boost/array.hpp>
#include <boost/algorithm/hex.hpp>
#include <algorithm>
#include "buffer_manager.hpp"
buffer_manager::buffer_manager()
{
}
buffer_manager::~buffer_manager()
{
}
std::string buffer_manager::message_buffer(m_array_type &recv_buf)
{
boost::algorithm::hex(recv_buf.begin(), recv_buf.end(), back_inserter(message));
return message;
}
m_array_type buffer_manager::get_recieve_buffer()
{
return recv_buf;
}
问题是我在buffer_manager 类中定义了一个类型m_array_type。我还声明了一个名为recv_buf的变量@
我尝试为该成员变量实现访问器函数。我得到的错误是
buffer_manager.cpp:22:1: error: ‘m_array_type’ does not name a type
m_array_type buffer_manager::get_recieve_buffer()
如何让 buffer_manager.cpp 识别类型m_array_type
【问题讨论】:
-
函数定义中是
buffer_mnager::m_array_type。 -
您还可以使用尾随返回类型来避免限定返回类型 -
auto buffer_manager::get_recieve_buffer() -> m_array_type -
你最近的错误是因为你在类定义中有
get_recieve_array,在cpp文件中有get_recieve_buffer。 -
@Praetorian - 啊谢谢 :(