我正在使用cstring函数,该函数应该比较两个字符串MyString和m2的值.我有#include所以它绝对不是那样的.这些是我的错误.
(74) : error C2275: 'MyString' : illegal use of this type as an expression
(74) : error C2660: 'MyString::length' : function does not take 1 arguments
(76) : error C2275: 'MyString' : illegal use of this type as an expression
Run Code Online (Sandbox Code Playgroud)
这是我从中获取它们的代码.
bool MyString::operator ==(const MyString &m2) const
{
int temp = 0;
if (length(MyString) = length(m2)) // 74
{
if (strcmp(MyString, m2)) // 76
{
temp = 1;
}
else
{
temp = 2;
}
}
if(temp = 2)
{
return "true";
}
else
{
return "false";
}
}
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将不胜感激,谢谢.
问题:
第74行应该是:
if (length() == m2.length()) // 74
Run Code Online (Sandbox Code Playgroud)第76行应该是:
if (strcmp(this->c_str(), m2.c_str())) // 76
Run Code Online (Sandbox Code Playgroud)在第76行中,这假设类型MyString有一个函数c_str(),它返回一个指向零终止的char []缓冲区的指针.
功能结构:
功能的结构非常糟糕.考虑更像这样的事情:
bool MyString::operator ==(const MyString &m2) const
{
if(this->length() != m2.length())
return false;
return !strcmp(this->c_str(), m2.c_str()));
}
Run Code Online (Sandbox Code Playgroud)
注意:在上面的函数中,this->可以省略.
| 归档时间: |
|
| 查看次数: |
1082 次 |
| 最近记录: |