2015-07-10 81 views
-2

我有一个class A由文件A.hppA.cpp实现。
class A的方法之一接收到一条消息,将其转换并存储到一个结构中。
方法签名看起来像这样和方法是公开的:类别使用的结构的类型

eRetCode A::ParseInfo(sometype* pMessage, tParsedInfoFromA& ParsedInfo); 

在我看来tParsedInfoFromA类型应该(用typedef)在,因为它是相关类和无意义没有被定义A.hpp类。
最简单的方法是在类的上方定义它。
但是,我觉得文件A.hpp应该从A类的声明开始。
所以我想要在类声明后出现该结构的typedef

确实C++我提供合法的方式(未一些“丑陋”特技),以指示tParsedDataFromA下面,所以我可以在ParseInfo方法的声明中使用参考tParsedInfoFromA类型的结构所限定?
我试过向前声明,但编译器不会有它。

将不胜感激您的意见

+0

你是什么意思_The编译意味着不会有it_? – BlackDwarf

+0

就像'一张图片胜过千言万语'一样,一个小的代码示例对你的问题会很好; –

+0

'tParsedInfoFromA'声明在哪里? – NathanOliver

回答

0

假设你A类有tParsedInfoFromA型(仅tParsedInfoFromA&tParsedInfoFromA*)的任何成员,方法返回或参数,您提供的cpp文件类A的实现,可以实现你想要什么。

在你的头,向前声明您结构为:

struct tParsedInfoFromA; 

然后,定义A级:

class A 
{ 
    eRetCode A::ParseInfo(sometype* pMessage, tParsedInfoFromA& ParsedInfo); 
    // ... 
}; 

然后,定义你的结构:

struct tParsedInfoFromA { 
    // ... 
}; 

的几点思考,虽然。 如果tParsedInfoFromA(不是最好的名字,但我认为实际名称更好)只包含少数成员,那么在A之前定义它是有意义的。如果它更长,最好将它放在单独的文件中。 最后,如果你觉得你的结构定义是undissociable类的,你可以声明结构嵌套在A.

class A 
{ 
    struct tParsedInfoFromA 
    { 
     // struct members 
    } 
    eRetCode A::ParseInfo(sometype* pMessage, tParsedInfoFromA& ParsedInfo); 
    // class members 
}; 
+0

@dureuillHi,dureuill非常感谢您的回答。以前我在做同样的事情,你有一个区别 - 我用typedef。用typedef它会给出错误。没有typedef它可以正常工作。作为评论的结果,我做了一个搜索,并附带了这个[链接](http://stackoverflow.com/questions/612328/difference-between-struct-and-typedef-struct-in-c)。根据这个typedef是没有必要的(除了隐藏问题),但我仍然很好奇为什么用typedef我有错误。 – Victoriia

+0

@dureuill错误是:'结构tParsedInfoFromA''的前向声明,''const struct tParsedInfoFromA''的声明,'结构tParsedInfoFromA有一个前面的声明结构tParsedInfoFromA' – Victoriia

+0

@dureuill关于这个想法:我有多个类,类似于A ,每个都有自己的知识,都从同一个父亲继承,都有ParseInfo方法。有些结构虽短但有些长。我不喜欢在课前申报的想法。把它放在分隔文件中的想法会产生多个文件,每个文件只包含结构。用户还需要包括hpp类和其他h文件。在课堂上宣布结构的想法很有趣。我需要详细了解它,以了解它是否适​​用于我。再次感谢! – Victoriia