我一直收到一个错误,说我需要一个班级类型。我不确定我做错了什么。 我在使用bool SellerHasName时遇到了麻烦。
enum ComputerType { DESKTOP, LAPTOP, TABLET, HANDHELD };
const int MAX_NAME_LEN = 51;
class Seller
{
private:
float salestotal;
int computersSold[NUM_COMPUTER_TYPES];
char name[MAX_NAME_LEN];
public:
// default constructor
Seller()
{
name[MAX_NAME_LEN];
salestotal = 0.0;
computersSold[DESKTOP];
computersSold[LAPTOP];
computersSold[TABLET];
computersSold[HANDHELD];
}
Seller ( char name[] )
{
name[MAX_NAME_LEN];
salestotal = 0.0;
computersSold[DESKTOP];
computersSold[LAPTOP];
computersSold[TABLET];
computersSold[HANDHELD];
}
// Returns true if the seller's name is the same as nameToSearch;
// false otherwise.
// Params: in
bool SellerHasName ( char hasname[] ) const
{
return (Seller::name[MAX_NAME_LEN].compare(hasname[MAX_NAME_LEN]) == 0);
}
答案 0 :(得分:0)
错误是由Seller::
中的Seller::name[MAX_NAME_LEN]
前缀引起的。不需要使用类名称为类成员变量添加前缀;只需写下:name[MAX_NAME_LEN]
。
由于您使用的是C ++而不是C,因此请忘记C风格的数组。特别是,C ++中的char
数组几乎总是一个坏主意。使用std::string
和std::array
(或std::vector
就此而言)事情变得更加简单,因此可以维护:
class Seller {
private:
float salestotal;
std::array<int, NUM_COMPUTER_TYPES> computersSold;
std::string name;
public:
Seller()
: salestotal(0.0)
{}
Seller (const std::string& nm)
: name(nm)
, salestotal(0.0)
{}
bool SellerHasName(const std::string& nm) const {
return (name == nm);
}
};