我正在教一個C++課程,並且在其中一個項目中,學生需要編寫一個Robot類的代碼。OOP:沒有靜態成員的類或完全重新設計
機器人的構造函數是固定的,實例是由學生無法修改的函數創建的。然而,其餘的課程設計只是一個練習。
我想確保Robot實例不能輕鬆地在彼此之間共享信息。如果學生想分享信息,他可以創建類的靜態成員,或者在類的實現中使用靜態變量來存儲關於每個實例的信息。 也可能有其他方式利用該語言來「作弊」(例如使用套接字寫入文件...)。
有什麼辦法來檢查這種濫用(例如存在靜態成員)嗎?在這一點上,我願意接受任何建議。 我應該考慮一個完整的重新設計,讓每個實例「生活在一個完全不同的世界」,以防止它們彼此通信? 預防是否是一個根本不可能的問題,我應該只是警告他們這種行爲的嚴重影響?
謝謝。
編輯: 我問這個問題的原因不是爲了減輕分級。我計劃創建一個自動化平臺,讓學生們可以提交他們的代碼並讓他們與對方競爭。在這種情況下,我將無法在發佈之前讀取和驗證代碼。 我想防止「簡單」濫用(例如靜態成員),並認爲更多涉及濫用行爲將不會如此常見。
因此,我的問題確實是:有沒有一種方法可以以編程方式防止學生擁有靜態成員(模板破解或某事)或我應該重新設計類。謝謝
'grep static code.cpp' – user657267
是的,我已經想到了這個:) – elvadrias
控制對類成員的訪問是在類級而不是單個對象。由於您正在教授課程,因此只要說明如果學生使用除非靜態成員以外的任何內容來在「Robot」實例之間進行交流,就會被標記。當然,這要求您檢查代碼,而不是簡單地自動檢查代碼。 – Peter