typedef unsigned char uchar;定义为私有的,在公有中无法使用
通过typedef自定义的类型,放在私有中,在公有中使用,提示未定义。
#pragma once #include <iostream> class _message { public: _message(); ~_message(); _message &init(); const uchar *data() const; //uchar未定义 uchar *data(); std::size_t length() const; const uchar *body() const; uchar *body(); const uchar *body_without_format() const; uchar *body_without_format(); std::size_t body_length() const; std::size_t body_length_without_format() const; void body_length(std::size_t new_length); void body_length_without_format(std::size_t new_length); bool decode_header(); void encode_header(); int get_err_code(); public: private: typedef unsigned char uchar; typedef unsigned short ushort; static const int m_ihead_len = 2; static const int m_imax_body_len = 2046; static const int m_iformat_len = 8; uchar m_szdata[m_ihead_len + m_imax_body_len]; std::size_t m_body_length; std::size_t m_off_set; };
将typedef unsigned char uchar;定义为私有的的声明放在接口声明的前面
#pragma once #include <iostream> class _message { private: typedef unsigned char uchar; typedef unsigned short ushort; public: _message(); ~_message(); _message &init(); const uchar *data() const; uchar *data(); std::size_t length() const; const uchar *body() const; uchar *body(); const uchar *body_without_format() const; uchar *body_without_format(); std::size_t body_length() const; std::size_t body_length_without_format() const; void body_length(std::size_t new_length); void body_length_without_format(std::size_t new_length); bool decode_header(); void encode_header(); int get_err_code(); template<typename T> _message& append(const T* _src, std::size_t _len); private: static const int m_ihead_len = 2; static const int m_imax_body_len = 2046; static const int m_iformat_len = 8; uchar m_szdata[m_ihead_len + m_imax_body_len]; std::size_t m_body_length; std::size_t m_off_set; static const char* const m_format_str; };

浙公网安备 33010602011771号