2014-09-21 84 views
2

大約去年我做了Java(Android)編程,並且在那之前做過C#。大約一個月後,我正在學習C++,並且因爲我結束了朋友,繼承和其他事情,所以我得到了一些問題,因爲直到現在我還沒有使用過它:是否可以在C++中更改程序本身的代碼?

有沒有辦法之後再定義朋友,因爲他們需要交換信息或其他東西。例如有沒有辦法在以後定義一個'隨機'朋友?你需要什麼?函數的名稱或類的地址?

還是有一般改變從程序本身代碼的方式,這樣纔不會有必要重新編譯?例如創建新的功能,類還是如此?

我會約有關的任何答案很開心。

回答

2

你想要做什麼是不可能的C++。如果您需要這種動態更改程序的方式,最好使用像Lisp這樣更動態的高級語言。

friend s只能通過修改其源代碼被添加到一個類。這是一個功能,而不是一個錯誤。

+0

好吧,我可以創建一個修改源代碼的實例,編譯新的並關閉自己?我需要一個包含所有臨時內容的外部文件,但它會起作用嗎? – blueBurningCoder 2014-09-21 09:32:23

+0

你試圖做的事聽起來很奇怪。你可能應該退一步,並且看看你的問題。符合C++精神的更好的解決方案肯定會出現。如果您認爲在運行時修改程序是一件很酷的事情,而您只是想*做到這一點,那麼恐怕您必須離開C++,轉而採用旨在執行此操作的語言。 C++不是。 – 5gon12eder 2014-09-21 09:37:55

+0

Eh不,我其實不想這樣做,但是我想知道它是否(理論上​​)是可能的,以瞭解它的複雜性,以便進一步編程 – blueBurningCoder 2014-09-21 09:57:51

0

有以這樣的擴展功能兩種方式。

  1. 使用動態加載模塊與所述擴展功能。這些模塊提供了一個特定的接口,可以與主程序分開編譯。
  2. 添加對腳本的支持 - 允許用戶添加寫腳本,並從程序中運行它們。

第一種解決方案比較容易,這取決於您希望賦予這些腳本多少控制權。

+0

我明白了。所以如果我想修改它的代碼,主程序需要重啓。或者我可以創建第二個實例,更改第一個實例,反之亦然? – blueBurningCoder 2014-09-21 09:36:04

相關問題