[英]error: [typedef inside a class] does not name a type
我实现了一个类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_manager::m_array_type buffer_manager::get_recieve_buffer()
^^^^^^^^^^^^^^^^
{
return recv_buf;
}
成员函数名称后面的所有内容都将在类的上下文中查找,但不会在返回类型中查找。
附带说明一下,您是否真的要按值返回它? 也许m_array_type&
?
m_array_type buffer_manager::get_recieve_buffer()
这里的问题是,当编译器看到m_array_type
它不知道它正在编译成员函数。 因此,您必须告诉它定义该类型的位置:
buffer_manager::m_array_type buffer_manager::get_recieve_buffer()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.