我有一个class A
由文件 A.hpp 和 A.cpp 实施。
class A
的一种方法接收消息,将其翻译并存储到结构中
方法签名看起来像这样,方法是公共的:
eRetCode A::ParseInfo(sometype* pMessage, tParsedInfoFromA& ParsedInfo);
我认为tParsedInfoFromA
类型应该在 A.hpp 中定义(使用typedef
),因为它与班级相关,没有班级则毫无意义。
最简单的方法是将它定义在类之上
但是,我认为文件 A.hpp 应该从A类声明开始。
所以我希望结构的typedef
出现在类声明之后。
C ++是否为我提供了合法的方式(而不是某些"丑陋的"技巧)来指示tParsedDataFromA
在下面定义,因此我可以使用对tParsedInfoFromA
类型结构的引用声明ParseInfo
方法?
我尝试了前置声明,但编译器没有获得它。
非常感谢您的评论
答案 0 :(得分:0)
假设您的班级A
没有成员,方法返回或tParsedInfoFromA
类型的参数(仅tParsedInfoFromA&
或tParsedInfoFromA*
),并且您提供了A类的实现cpp文件,你可以实现你想要的。
在标题中,forward将结构声明为:
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
};