我正在学习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);
};
};
Run Code Online (Sandbox Code Playgroud)
类定义如下:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能创建一个类型的函数my_message_t
?我如何修复上面的代码?
my_message_t
是在Messages
类中的作用域,因此在类的成员之外使用时需要限定:
Messages::my_message_t Messages::create_message(my_message_e type){
^^^^^^^^^^
// do stuffs
}
Run Code Online (Sandbox Code Playgroud)
注意,在函数参数列表中不需要它,只需要返回类型; 语言的怪癖意味着参数列表在函数内部作用域,并且返回类型在外部.