2011-02-08 43 views
1

我已經用C++編寫了一段時間,而且我認爲嘗試從Visual C++開始並製作計算器會很有趣。VisualC++函數問題(和其他)

好的,所以我設計了一個簡單的窗口,帶有兩個文本框和一個將兩個框添加在一起的按鈕。 我知道我不需要這個功能,但我喜歡嘗試一下,學習它們。 所以當我在設計視圖中,我雙擊按鈕,以獲得其代碼。 在代碼的開始,我做了兩個變量,併爲它們分配了一個值。 現在我想調用一個帶兩個參數並返回附加值的函數。 那它很煩人的,因爲我得到這個錯誤:

error C3861: 'addFunction': identifier not found 

我也有另外一個問題。 我有一個if()來確保兩個文本框都有一個值。 的,如果是這樣的:

if(a && b) 

編譯器給了我這個錯誤:

error C2676: binary '&&' : 'std::string' does not define this operator or a conversion to a type acceptable to the predefined operator 

呀,一個變量是一個字符串,但它應該仍然工作,對不對?

我HOope你可以幫我!

編輯 我已經解決了這兩個問題,但現在,更多的發生。

的一個錯誤是抱怨這樣的:

textstring = DecryptedBox->Text; 

而且,還有另一個錯誤,在編譯日誌存在的像10倍

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xstring(707): could be 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(std::basic_string<_Elem,_Traits,_Ax> &&)' 
1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char>, 
1>    _Ax=std::allocator<char> 
1>   ] 

是什麼意思?

+2

發表了一些代碼......並且還提到了文件結構.. – Nawaz 2011-02-08 16:57:38

+1

如果你已經解決了你的問題,你應該投票回答有用的答案,並接受最有助於你的答案。那麼你應該發佈一個關於你的新問題的新問題。 – Dima 2011-02-08 17:35:27

+0

好吧。我會爲此提出一個新的問題。 – Janman 2011-02-08 17:50:37

回答

1

我assumming該字符串& & b都是字符串值。所以你應該像

if(a.empty() || b.empty()) 
    std::cout << "Values don't exist in one of the boxes" << std::endl; 

而addFunction標識符未找到意味着編譯器無法找到addFunction函數。你有沒有聲明?它在另一個班級,你沒有做一個包括?

1

不能與&&一起使用字符串。這是一個邏輯運算符。參數必須轉換爲布爾值。您可以嘗試:

if((a != "") && (b != "")) 

假設a和b是字符串初始化爲空字符串。

爲了您addFunction問題,沒有足夠的細節...

MY2C

+0

FWIW,當在「if」語句中組合表達式時,額外的括號有助於讀取。首選:`((a!=「」)&&(b!=「」))`,這爲讀者(和編碼人員)不會誤解該陳述提供了額外的保險。 – 2011-02-08 18:12:55

1

好像你還沒有定義 「調用addFunction」。你可能拼錯了。

要檢查字符串是否爲空,只檢查其大小爲> 0,所以你的代碼應該變成:

if(a.size() && b.size()) 
1

對於在if(a && b)聲明的錯誤,你可能錯誤地假設ab是C風格char *,和你想檢查其是NULL。然而,現實似乎是ab是類std::string的對象,它們不能轉換爲布爾值。您可以使用empty()成員函數檢查std::string是否爲空。或者你檢查它是否等於""

對於未定義的函數錯誤,請檢查您是否包含定義該函數的標題,並確保您具有正確的名稱空間。