2017-04-02 62 views
-2

我有一个接收不可修改字符串地址的运算符。我试图比较收到的地址的大小与sku项目。如果它们是相同的,我会返回true,如果不是false的话。我得到的c.size(也称表达必须有一个类类型的错误),我不知道为什么表达式必须具有类类型(运算符)

char Item::operator==(const char* c) 
{ 
    if (this->get_sku.size() == c.size()) //Error 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

// getter函数

char Item::get_sku() const 
{ 
    return *m_sku; 
} 
+2

是什么让你觉得指针有size()成员函数?为什么你要使用字符指针呢? –

+0

老师指定我必须使用char指针 –

+0

找一个更好的老师。如果您需要查找由字符指针指向的C风格字符串的长度,请使用strlen(),但该函数不会用作相等操作 - “foo”和“bar”具有相同的长度,但不是等于。 –

回答

0

我不是确定你想要达到的目标。但是由于get_sku返回一个单一的char,因此以任何方式查询其长度或将其与char*进行比较都没有多大意义。以下编译,但我不知道你确切的问题是什么。

class Item 
{ 
public: 
    bool operator==(char c) const; 
    char get_sku() const; 
private: 
    char * m_sku; 
}; 

bool Item::operator==(char c) const 
{ 
    return this->get_sku() == c; 
} 

char Item::get_sku() const 
{ 
    return *m_sku; 
} 
相关问题