【发布时间】:2020-01-18 12:02:09
【问题描述】:
我是一名导师,我正在尝试写一些东西来帮助学生学习 C++。假设我有一个包含两个 .h 文件的 .cpp 文件,我们将它们称为“solution.h”和“student_answer.h”。 “solution.h”文件包含一个名为“Solution”的类,它实现了解决问题的成员函数和变量。学生们将在一个单独的“student_answer.h”文件中实现他们自己对同一问题的解决方案,在一个我们称之为“学生”的课程中。
.cpp 文件然后应采用两个类定义,“Solution”(在 solution.h 中定义的类)和“Student”(在 student_answer.h 中定义的类),并运行这两个实现以验证是否学生的答案是正确的,如果学生的答案有错误,它应该提供详细的输出。但是,我希望能够对学生隐藏 solution.h 文件(或“解决方案”类)的内容,同时仍然为他们提供可以编译和运行自己的解决方案的 .cpp 文件。
目前,我有这样的事情:
#include "solution.h"
#include "student_answer.h"
// ...
int main() {
Solution s;
Student a;
// run member functions of s and a, compare results to verify if student
// implementation is correct (and print helpful output if there is a bug)
...
}
有没有办法在不向学生透露 solution.h 文件的情况下做同样的事情?有没有更好的方法来做到这一点?
谢谢!
【问题讨论】:
-
C 没有类类型。 C标签在这里不适用。
-
投票结束作为 POB。也就是说,一个简单的方法是不在
solution.h中实现任何东西。将类声明放在solution.h中,然后在solution.cpp中实际定义solution.h的实现。这让你和学生都有相同的声明,然后你只需在编译时指向你的solution.cpp,或者学生的solution.cpp。 -
当然,解决方案应该只保存定义,而实现应该以库的形式编译(假设您希望它们能够自己运行)。这样他们就看不到代码了。
-
也许你应该发现单元测试。
标签: c++ header include header-files