更改變量的值我在我的C++,其中我tryig用於更新上的GUI的一部分顯示的信息的下面的函數:C++基於時間
void store::updateHeader(){
...
strstart = &newHeaderMsg.headerText[0];
*strstart = 'D';
const char* originalStrStartValue = strstart;
double timeWarningStarted = SimulationTime::Instance()->getSimulationTime();
if(warningSelect == 1){
timer->begin();
...
warningTimeout = 15; // time in seconds
double timeWarningDisplayed = SimulationTime::Instance()->getSimulationTime();
if(timerStarted){
*strstart = 'R';
if(timeWarningDisplayed >= (timeWarningStarted + warningTimeout)){
*strstart = *originalStrStartValue;
}
} else {
*strstart = originalStrStartValue;
}
} else {
*strstart = originalStrStartValue;
}
}
基本上,邏輯的功能是:
- 創建一個變量,該變量將保存數組第一個元素(數組
newHeaderMsg.headerText[]
)的內存位置。該變量被稱爲strstart
。 - 設置內存位置
strstart
等於'D' - 獲取當前系統時間,並將其值傳遞給變量
timeWarningStarted
。 - 如果在GUI上進行了特定選擇(即
warningSelect
設置爲1
,請啓動計時器,並將warningTimeout
變量設置爲15(15秒),然後獲取當前系統時間並將其值設置爲變量timeWarningDisplayed
。 - 如果計時器已啓動,在所述第一元件的陣列中的存儲器位置設置變量(即
strstart
的存儲器位置),以「R」。 - 檢查
timeWarningDisplayed
變量是否大於或等於總和爲timeWarningStarted
和warningTimeout
(如果是,那麼警告已經顯示了預定的時間長度) - 如果
timeWarningDisplayed
大於或等於timeWarningStarted
和warningTimeout
的總和,則將*strstart
的值設置爲值originalStrStartValue
,即將其設置回'D'。 - 否則,如果
warningSelect
不是'1',則將*strstart
的值設置爲值originalStrStartValue
,即將其設置回'D'。
我遇到的問題是試圖設置變量的值originalStrStartValue
。如果我用上面的代碼運行程序,那麼儘管我已經聲明originalStrStartValue
和const
,因爲我改變它指向的變量的值,它的值也會改變。
如果我嘗試將它設置爲strstart
內存位置相反,即
const char* originalStrStartValue = *strstart;
然後我得到的編譯錯誤:
Error: a value of type "char" cannot be used to initialize an entity of type "const char * "
所以我的問題是,我怎麼能建立一個在一個函數中某個特定內存位置的變量的'默認'值,然後在同一個函數中,當某個特定條件爲真時,更改該變量的值,但是在該條件不再存在時自動恢復爲默認值真正?
從編譯器的錯誤信息實際上還不清楚什麼?你寧願寫'const char * originalStrStartValue = strstart;'? –
@ scohe001它確實,你是對的,我的壞 –