2012-05-23 41 views
0

我只是回到編程中,所以請原諒我,如果這非常愚蠢。C++中的類之間的變量超出範圍

我有2個類(現在)。一個是Windows Form類,我使用Button_Click事件觸發通信端口打開。我想將用戶在表單上輸入的數據傳遞給Communication類以進行進一步處理(發送)。 這是初始化並調用通信類的部分:

wchar_t * data = new wchar_t[nLength]; 
    *data = *wch; 

    SerialCommunication comm1; 
    bool comm1ok = comm1.SerialWrite(data); 

變量「數據」是一個指針,所以我想它的地址傳遞給其他類使用。 這是我的第二類:

bool SerialCommunication::SerialWrite(wchar_t * datar){... 

,但數據永遠不會使得它在那裏。一旦SerialWrite()函數啓動,它就會超出範圍。我需要以其他方式聲明這個指針,以確保它在類之間移動時不會消失嗎?據我所知,這些類都是公開的(我寫了SerialCommunication之一,所以我知道它是公開的)。

我在做什麼錯?我應該改變什麼?

謝謝!

回答

4

此:

*data = *wch; 

不會做你認爲是什麼(或什麼,我想你想)。它只是將wch的第一個元素複製到data的第一個元素中。

+0

好的,那是真的,我沒有注意到,因爲我總是隻輸入一個數字。我將努力修復它。但是,這是否會影響我的變量未通過的情況? – Mewa

+0

@Mewa:指針超出範圍,但這並不重要,因爲使用'new'分配的內存不會被刪除(除非您調用'delete []'!)。 –

+0

謝謝!我一直在想,如果調試者告訴我它超出了範圍,我將無法讀取它的價值。它雖然工作正常。我通過使用char *和strcpy_s改變了我的原始問題,並且它運行良好。 – Mewa