4

我有一个程序,我得到了编译的 .o 文件,但我没有原始的 .cc 文件,而且我只有一个完成一半的头文件。头文件具有所有方法签名,但缺少私有变量声明。我试图让这个 .o 文件与项目一起使用,但在 .o 文件定义的类的构造函数中出现分段错误。程序编译。我怎样才能让它工作?该程序是家庭作业,老师不希望我们看到 .cc 文件。我的老师也知道这个问题。我只是想自己弄清楚(希望在你们的帮助下:))。我以为我之前和另一位老师做过这个,但没有任何问题。有一个用于编译程序的makefile。

4

1 回答 1

4

如果您使用的是 C++ 程序,并且头文件包含类定义,则类定义必须与最初构建文件时使用的完全匹配。这是一个定义规则。如果您的教授从类定义中删除了私有变量声明,您可能会以崩溃告终;这是因为您的不同 .o 文件对这些类定义的对象的大小存在分歧。

如果你的教授想要隐藏课程的实现,他们应该使用p/impl 模式。如果要使用头文件,则必须完全删除损坏的类定义,而不是尝试使用它们(但是,您可以使用前向定义class Foo;来满足任何将类作为指针参数接受/返回的函数)。

于 2011-10-30T01:37:00.570 回答