【发布时间】:2013-12-04 02:05:52
【问题描述】:
我一直收到一个错误,说我需要一个类类型,但我有一个声明。我不确定我做错了什么。 我在使用布尔 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);
}
【问题讨论】:
-
return (Seller::name[MAX_NAME_LEN].compare(hasname[MAX_NAME_LEN]) == 0)
-
它不喜欢 Seller::name
-
第 4 行
Seller ( char name[] )看起来像一个函数声明,没有声明返回类型,也没有分号。以下 6 行看起来像一个变量声明,但没有指定类型。这是 C++ 吗? -
这是我不熟悉的 C++ 语法吗?
-
@Michael 它被称为构造函数:)。但是,是的,该参数未被使用,并且构造函数主体中的 6 行中有 5 行不执行任何操作。最重要的是,第 1 行,salestotal 的初始化可以使用大括号或等号初始化器更好地完成,以避免重复。
标签: c++ string string-comparison