2014-02-13 72 views
0

我正在爲類進行賦值,並且在編譯此代碼時遇到問題。我在主.cpp文件和類.cpp文件中都使用了#include <string>。錯誤是''strcmp'不是'std''的成員,但我知道它是否使用std :: strcmp()或strcmp()。C++在私有成員數據類中使用strcmp()

對我在做什麼有什麼想法嗎?

double temporary::manipulate() 
{ 
    if(!std::strcmp(description, "rectangle")) 
    { 
    cout << "Strings compare the same." << endl; 
     return first * second; 
    } 
    return -1; 
} 

回答

4

你需要分別包括strcmpstd::strcmp<string.h><cstring><string>std:string和其他相關功能所需的C++標準庫。

請注意,std::strcmp需要兩個const char*,而不是std::string。如果descriptionstd::string,你可以得到一個指向與c_str()方法的基礎數據:

if(!std::strcmp(description.c_str(), "rectangle")) 

或只是使用比較操作符。這是比較習慣的解決方案:

if(description == "rectangle") 
+1

@DavidPetersonH​​arvey見我的編輯。去尋找習慣解決方案! – juanchopanza

+0

對不起冗餘,試圖找出在哪裏添加評論和打錯地方。然而,這是可喜的進展,但現在我得到錯誤:無法將'std :: string {aka std :: basic_string }'轉換爲'const char *'將參數'1'轉換爲int int strcmp(const char *,const char *)' 歡迎任何進一步的想法! –

+0

謝謝!我過於複雜的事情。非常尊重! –

1

一旦你#include <cstring>可以訪問此功能。

1

使用C++標準C函數包括strcmp在標頭<cstring>中聲明。標題<string>定義了標準類std::basic_string。 所以你需要指令

#include <cstring> 
1

嘗試

#include <cstring> 

...

if(!std::strcmp(description.c_str(), "rectangle"))