[英]struct as a type for function in C++
我正在學習C ++,並試圖創建一個在類定義中定義的返回類型為“ my_message_t”的函數。 但是,當我嘗試編譯它時,編譯器通知我該錯誤: “ my_message_t”未命名類型
我有以下代碼(protocols.h和protocols.cpp)
namespace Protocols {
class Messages {
public:
typedef struct _my_message_t {
//stuffs
} my_message_t;
typedef enum {
//stuffs
} my_message_e;
private:
my_message_t my_msg;
my_message_e msg_en;
public:
Messages();
~Messages();
my_message_t create_message(const my_message__e);
};
};
類定義如下:
namespace Protocols {
Messages::Messages(){
//stuff
};
Messages::~Messages(){
//stuffs
}
my_message_t Messages::create_message(my_message_e type){
my_message_t msg;
//do stuffs
return msg;
}
}
為什么我不能創建類型為my_message_t
的函數? 如何在上面修復該代碼?
my_message_t
的作用域在Messages
類內部,因此在類的成員外部使用時需要對其進行限定:
Messages::my_message_t Messages::create_message(my_message_e type){
^^^^^^^^^^
// do stuffs
}
請注意,您不需要在函數參數列表中僅返回類型; 語言的怪異意味着參數列表的作用域在函數內部,而返回類型在函數外部。
更改:
my_message_t Messages::create_message(my_message_type_e type)
至:
Messages::my_message_t Messages::create_message(my_message_e type)
^^^^^^^^^^
my_message_t
是在Messages
類內部定義的類型,因此您需要:
Messages::my_message_t Messages::create_message(my_message_type_e type)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.