2014-02-13 39 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"))