0
我需要從類Tool
派生,因爲我必須用另一個接口IToolWrapper
修飾該類。不幸的是,Tool
類不提供一個拷貝構造函數,這就是爲什麼我認爲一個人不能寫DerivedTool
的構造器一樣從派生類構造函數初始化基類沒有複製構造函數
public DerivedTool(String filename) : base(createToolFromFile(filename)) {
//...
}
雖然我相當肯定它不會工作,我嘗試了以下內容:
public sealed class DerivedTool : Tool, IToolWrapper {
static bool createToolFromFile(ref Tool tool, String filename) {
tool.Dispose();
tool = null;
try {
tool = LoadFromFile(filename) as Tool;
} catch (Exception) {
return false;
}
return true;
}
public DerivedTool(String filename) : base() {
Tool tool = (Tool)this;
if (!createToolBlockFromFile(ref tool, filename)) throw new Exception("Tool could not be loaded!");
}
}
在調試程序,我看到tool
作爲I本地給構造變量被修改爲所需的(b/C沒有輸入捕獲情況下),但的DerivedTool
底座部分(即Tool
)不影響。 我該如何達到理想的行爲?
我們不知道怎麼'CogToolBlock'類的工作,比你更好,除非我們知道更多一點。 – Jodrell
爲什麼不創建另一個在構造函數中使用Tool實例並通過將操作轉發給所提供的Tool-instance來實現接口的類?您是否需要使用新課程來替代開箱即用的工具,例如把它交給以Tool作爲參數的方法? – Markus
@Matz:問題不是很清楚......你能否詳細解釋一下細節,以便我們可以用完美的解決方案來幫助你。 –