C++ 中数组的"expression must have pointer-to-object type"是什么?
What is "expression must have pointer-to-object type" for arrays in c++?
我在有关行中评论。对我来说这没什么意义。指"表达必须具有指向对象类型的指针"。我试图使用索引随机数访问我的"项目"数组,但它错误的数组。
#include "stdafx.h"
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <string>
#include <sstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
struct product {
double price;
} pasta, cookies, candy, chips, pop, bread, eggs;
//struct sales {
//double salepercent;
//} pastasale, cookiesale, candysale, chipsale, popsale, breadsale, eggsale;
double prices[7] = { pasta.price = 3.99, cookies.price = 4.99, candy.price =
2.99, chips.price = 1.99, bread.price = 3.85, eggs.price = 5.99 };
//double sales[7] = {pastasale.salepercent = 0.30, cookiesale.salepercent =
0.30, chipsale.salepercent = 0.30, popsale.salepercent = 0.30,
breadsale.salepercent = 0.30, eggsale.salepercent = 0.30}
double costumer_cart[7] = {};
double subtotal = 0;
double total = 0;
double fillcart(double cart[], double items)
{
srand(time(NULL));
for (int i = 0; i < 8; i++)
{
cart[i] = items[rand() % 8]; //EXPRESSION MUST HAVE POINTER-TO-
OBJECT TYPE on "items[rand() % 8]"
}
cout << "Cart: " << cart;
}
int main()
{
double fillcart(double costumer_cart, double prices);
system("PAUSE");
return 0;
}
在您的fillcart()
功能
double fillcart(double cart[], double items)
items
是类型double
,但您将其用于
cart[i] = items[rand() % 8]; //EXPRESSION MUST HAVE POINTER-TO-
使用数组语法[]
的表达式在double
上不起作用。在其基本形式中,这样的表达式要求items
是指针或数组,而rand() % 8
则为积分类型。rand() %8
是一个积分类型(好(,但是items
是类型double
,它既不是指针也不是数组。
cart[i]
的使用情况是有效的,因为cart
是指指针(当使用数组语法[]
用于指定函数参数的类型时,该参数实际上是作为指针传递给函数的(。
注意:阵列语法也可以在C 的其他情况下使用,例如使用提供operator[]()
的类的实例,但这里也不是这种情况。
相关文章:
- "No-Const Pointer to Const "调用功能
- 为什么"non-standard syntax; use '&' to create a pointer to member"在 CTOR 中使用线程?
- 'Pointer to member'错误C++
- 如果它被定义为 C++ 类中的成员函数,我得到了"non-standard syntax; use '&' to create a pointer to member"
- C++ 中数组的"expression must have pointer-to-object type"是什么?
- 将派生类对象赋值和访问到基类 "pointer to pointer" C++ 中的对象
- 自 C++17 以来使用 std::launder "validate"非"pointer to object"指针值
- 使用c_str时"Use & to create a pointer to a member"
- Visual Studio 2015:获取"non standard syntax, use '&' to create a pointer to member"错误
- 混淆从"array of int[]"到"pointer to int"的显式衰减?
- 将"pointer-to-member"分配给自身
- 当从此到子类中的新对象时,将显示警告"destination for this 'memcpy' call is a pointer to dynamic class..."
- Pointer to boost::thread
- 将"pointer to pointer"传递给模板函数
- 在 2D 阵列分配期间对 calloc 进行"expression must have (pointer-to) function type"
- 禁用 Clang 中的"cast from pointer to smaller type uint32_t"错误
- 收到"void* is not a pointer-to-object type"错误,但使用 XCode 时代码完美执行
- 将"pointer to a child class"追加到"pointer to the parent class"向量中
- 如何在 c++ 中从 "pointer-to-objects" 向量访问对象
- 在C++,我收到一条消息"error: 'void*' is not a pointer-to-object type"