类使用的结构的类型定义
Typedef of structure that is used by a class
我有一个class A
实现的文件A.hpp和和 a.p 。class A
的一种方法是接收消息,将其翻译并存储到一个结构中。方法签名如下所示,方法是公共的:
eRetCode A::ParseInfo(sometype* pMessage, tParsedInfoFromA& ParsedInfo);
我认为tParsedInfoFromA
类型应该在A.hpp处定义(使用typedef
),因为它与类相关,没有类就没有意义。
最简单的方法是在类的上面定义它。但是,我觉得文件A.hpp应该从a类声明开始。
所以我希望结构的typedef
出现在类声明之后。
c++是否为我提供了合法的方式(不是一些"丑陋"的技巧)来指示tParsedDataFromA
在下面定义,以便我可以在ParseInfo
方法的声明中使用对tParsedInfoFromA
类型结构的引用?
我尝试向前声明,但编译器不会有它。
感谢您的评论
假设您的类A
没有成员、方法返回值或tParsedInfoFromA
类型的参数(只有tParsedInfoFromA&
或tParsedInfoFromA*
),并且您在cpp文件中提供了类A的实现,您可以实现您想要的。
在头文件中,向前声明struct为:
struct tParsedInfoFromA;
然后定义类A:
class A
{
eRetCode A::ParseInfo(sometype* pMessage, tParsedInfoFromA& ParsedInfo);
// ...
};
然后定义结构体:
struct tParsedInfoFromA {
// ...
};
我有一些想法。如果tParsedInfoFromA(不是最好的名称,但我认为实际名称更好)只包含几个成员,那么在a之前定义它是有意义的。如果它较长,你最好把它放在一个单独的文件中。最后,如果您觉得您的结构体的定义与您的类不可分离,您可以声明嵌套在a中的结构体。
class A
{
struct tParsedInfoFromA
{
// struct members
}
eRetCode A::ParseInfo(sometype* pMessage, tParsedInfoFromA& ParsedInfo);
// class members
};
相关文章:
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 列表参数的类型定义
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 关于 C++ 中的函数类型定义
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- 将使用/类型定义限制为类范围
- 模板类型定义?
- C++:模板类的类型定义
- 如何对命名空间限定类型进行类型定义?
- 此递归模板类型定义是否有效C++?
- 具有调整对齐方式的类型定义
- C++从抽象类型定义类成员
- 用于C++代码的 API 监视器类型定义 (XML)
- 如何将result_of与函数类型定义一起使用
- 在C++的适当类型定义位置
- 如何根据模板类型定义浮点常量?
- 如何为缺少预定义运算符而不扩展命名空间"std"的标准类型定义运算符>> (istream &, ...)?
- 参数化类的别名(或类型定义)内部类
- 如果我想从类型"T"定义元素的容器(来自 STL),那么"T"必须使用默认构造函数?