2016-06-27 148 views
-1

這似乎是一個簡單的問題,但我無法理解解決方案是什麼。我有一個屏幕類,其中的對象基本上是X和Y座標,字體顏色等所有工作正常,我可以實例化和使用這些對象。實例化對象變量可見性

有時我需要改變正在寫入屏幕的字符串的顏色。這更像是一個「系統調用」,一旦完成,將設置所有字符串。所以每次我寫屏幕時,我都被迫首先「設置文本顏色」。或者我?我有一個方法,setValue: objA->setValue("1234", RED);

當方法得到這個調用,它會設置屏幕寫入的顏色。假設objA只是設置顏色RED。如果另一個對象需要寫入屏幕,並且它的顏色相同,我不想再次將它寫入屏幕,以減少寫入屏幕的次數。所以,基於最後一個對象的顏色,我想更新屏幕文本的顏色(或不是) 在C中,這當然是最爲邪惡的靜態全局。我如何在C++中做類似的事情?

謝謝...

+0

嗨,謝謝你的回答! 「setValue」是一種重載函數,可以設置特定的圖形對象,也可以將文本設置爲x,y位置。你的類靜態變量的建議非常好。再次感謝! – user10326

+0

實際上,因爲我不能動態分配內存(在FreeRTOS中使用mem模型2),所以我使用「new」來創建對象,這應該不需要將它們創建爲靜態。將該變量聲明爲私有,並設置/測試它可以很好地工作。 – user10326

+0

歡迎來到Stack Overflow!我編輯了您的問題以格式化內聯代碼示例,以便它能夠正確呈現 - 請參閱編輯幫助以獲取有關格式化的更多信息。請編輯以提供確定具體問題所需的其他詳細信息。祝你好運! – Wtower

回答

0

我不能完全確定你要什麼,這裏:IE瀏覽器,如果你使用的是指該對象代表屏幕還是有點文本的在屏幕內。我會假設後者。

這聽起來像你只是想要一個地方鬆開你的顏色值,對於未指定顏色值的後續調用。你應該看看類靜態成員。在最簡單的情況下,你只需要一個私有的「color」類型的靜態類成員,並讓你的「setValue()」函數簡單地更新該變量。如果我正確地閱讀你的問題,「setValue」應該被稱爲「寫文本」,也許我會被誤解,但是也可以將「set color」分解爲你的課變成了一個公共的靜態成員函數,不是一個正確的東西,只是一個清晰的東西。)

+0

我不確定是否需要「靜態」。 –

+0

是的,這取決於調用是按屏幕還是按屏幕上的每個對象;如果每個屏幕> 1個對象,則會需要靜態,因爲它將被共享。如果這只是一個「屏幕」對象,那麼顏色將只是一個普通的舊成員。 –