struct作为c++中函数的类型
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)
相关文章:
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 将C++子类成员函数(虚拟实现)传递给 C 类型函数指针
- C++ 这里有一个返回 (24) 的布尔返回类型函数
- 使用SFINAE来检测void返回类型函数的存在
- 使用此类型函数有什么优势
- 为什么此函数通过类型函数指针调用后,呼叫明智地行为
- 如何使用无类型函数指针调用C++成员函数
- 模板返回类型函数如何在C++中工作
- 具有通用类型函数的动态库[C ]
- 如何在返回类型函数模板的专用化中使用派生类型?( "couldn't infer template argument" )
- Bon appetit :从 int 返回类型函数在 main() 中打印字符串
- 对于需要其他模板参数的类型函数的部分模板专业化
- c++错误的参数类型-函数指针
- 延迟评估模板类型函数
- 在引用或指针返回类型函数上输入
- 具有指针数据类型的非类型函数模板参数
- STL中使用的C++自定义比较类型(函数谓词与较少结构)
- C++模板基类的非类型函数模板的 using 声明
- 字符串到类型函数,模板专用化使调用统一
- 自由类型函数可以接受 Unicode 文件名吗?