簡體   English   中英

錯誤:[類內的typedef]沒有命名類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM