我正在教一个C++课程,并且在其中一个项目中,学生需要编写一个Robot类的代码。OOP:没有静态成员的类或完全重新设计
机器人的构造函数是固定的,实例是由学生无法修改的函数创建的。然而,其余的课程设计只是一个练习。
我想确保Robot实例不能轻松地在彼此之间共享信息。如果学生想分享信息,他可以创建类的静态成员,或者在类的实现中使用静态变量来存储关于每个实例的信息。 也可能有其他方式利用该语言来“作弊”(例如使用套接字写入文件...)。
有什么办法来检查这种滥用(例如存在静态成员)吗?在这一点上,我愿意接受任何建议。 我应该考虑一个完整的重新设计,让每个实例“生活在一个完全不同的世界”,以防止它们彼此通信? 预防是否是一个根本不可能的问题,我应该只是警告他们这种行为的严重影响?
谢谢。
编辑: 我问这个问题的原因不是为了减轻分级。我计划创建一个自动化平台,让学生们可以提交他们的代码并让他们与对方竞争。在这种情况下,我将无法在发布之前读取和验证代码。 我想防止“简单”滥用(例如静态成员),并认为更多涉及滥用行为将不会如此常见。
因此,我的问题确实是:有没有一种方法可以以编程方式防止学生拥有静态成员(模板破解或某事)或我应该重新设计类。谢谢
'grep static code.cpp' – user657267
是的,我已经想到了这个:) – elvadrias
控制对类成员的访问是在类级而不是单个对象。由于您正在教授课程,因此只要说明如果学生使用除非静态成员以外的任何内容来在“Robot”实例之间进行交流,就会被标记。当然,这要求您检查代码,而不是简单地自动检查代码。 – Peter