C++ 错误:请求成员';尺寸';在'';,属于非类类型';int*';
我不知道为什么我现在有这个问题 错误:请求“isbn”中的成员“size”,该成员属于非类类型“int*” 我试图得到isbn中有多少个元素(整数)C++ 错误:请求成员';尺寸';在'';,属于非类类型';int*';,c++,class,C++,Class,我不知道为什么我现在有这个问题 错误:请求“isbn”中的成员“size”,该成员属于非类类型“int*” 我试图得到isbn中有多少个元素(整数) 教材{ 受保护的: 国际标准书号[20]; 字符标题[50]; char作者[30]; 浮动基本价格; 公众: 书籍(int*isbn=0,const char*title=“”,const char*author=“”,float basic_price=0) { //这方面的问题是: 对于(int i=0;iisbn[i]=isbn[i]; s
教材{
受保护的:
国际标准书号[20];
字符标题[50];
char作者[30];
浮动基本价格;
公众:
书籍(int*isbn=0,const char*title=“”,const char*author=“”,float basic_price=0)
{
//这方面的问题是:
对于(int i=0;iisbn[i]=isbn[i];
strcpy(此->标题,标题);
strcpy(这个->作者,作者);
该->基本价格=基本价格;
}
};
正如错误消息所说,int*
没有成员函数size()
。您必须以另一种方式确定大小
固定值20
(来自成员数组的大小isbn
)可能会起作用,但请注意不要导致超出范围的访问
另一个选项是添加另一个参数来传递数组中的元素数量。C++中的
< P>,数组没有一个<代码> siz()/<代码>方法。< /P> 一英里之内你能做的最好的事情就是替换int isbn[20];
与
标准:向量isbn;
并相应地增加向量。使用
std::string
代替char
数组。如果要获取C样式数组中的元素数,可以使用两个选项。例如
int xs[5];
你可以用任何一种
sizeof(xs)/sizeof(xs[0])
std::size(xs)
int(&)[20]的this->isbn
,但对于isbn
函数参数,它的类型是int*
您不能将size()用于常规数组,要使用size(),必须使用STL容器std::vector。
要使用数组初始化向量,请使用:vector-vec(isbn,isbn+20)
否则,您可以将代码中的for语句替换为:
for(int i=0; isbn[i]; i++)
Thanx对于
int*
的.size()
,您希望得到什么?isbn变量中有多少元素“我不知道为什么我现在有这个问题!”这需要一些练习,但您要做的是阅读错误消息并尝试理解它告诉您的内容。我猜是有人或某事让您相信存在名为size()的成员函数
对于您正在使用它的类型。使用将很好地代替char
@MikeCAT:Done!而std::array
对于固定大小,可能isbn
是一个很好的候选者,其他的可能不需要您编写this->isbn
,而不是isbn
,在这种情况下。这些方法不适用于指针。@MikeCAT I忽略了一个事实,即他有一个与成员变量同名的函数参数。如果输入数组的大小在这里很重要,即它可以小于成员的大小,OP应该只传递输入大小作为附加参数。这就是C中的操作,如果他使用的是C数组,这看起来像是一个合适的解决方案谨慎。
for(int i=0; isbn[i]; i++)