error: base operand of ‘->’ has non-pointer type ‘cups_job_t’ {aka ‘cups_job_s’} 155 | int num_copies = cupsGetInteger(jobs[i]->attrs, "job-impressions-completed", -1);
时间: 2024-03-03 21:53:26 浏览: 24
这个错误提示是因为`jobs[i]`是一个结构体`cups_job_t`,不是指针类型,不能使用箭头运算符`->`。你需要改为使用点运算符`.`来访问结构体中的成员,例如`jobs[i].attrs`代替`jobs[i]->attrs`。修改后的代码如下:
```c++
int i,num_jobs;
cups_job_t *jobs = NULL;
num_jobs = cupsGetJobs(&jobs, NULL, 0, CUPS_WHICHJOBS_ALL);
for (i = 0; i < num_jobs; i++)
{
if (jobs[i].id == job_id)
{
int num_copies = cupsGetInteger(jobs[i].attrs, "job-impressions-completed", -1);
cupsFreeJobs(num_jobs, jobs);
return jobs[i].state;
}
}
cupsFreeJobs(num_jobs, jobs);
return -1;
```
这样修改后应该就能正确编译了。
相关问题
base operand of '->' has non-pointer type 'std::vector<Wares>
这个错误通常是因为你尝试在一个非指针对象上使用箭头运算符 "->"。箭头运算符只能用于指针对象,而std::vector<Wares>不是指针类型,它是一个容器类模板,因此不能使用箭头运算符。
如果你想访问std::vector<Wares>中的元素,可以使用下标运算符 "[]" 或者迭代器。例如,如果你想访问第一个元素,可以使用以下语句:
```
std::vector<Wares> myVector;
Wares firstElement = myVector[0]; // 使用下标运算符访问第一个元素
```
或者使用迭代器:
```
std::vector<Wares> myVector;
std::vector<Wares>::iterator it = myVector.begin(); // 获取迭代器指向第一个元素
Wares firstElement = *it; // 使用解引用运算符访问第一个元素
```
希望能帮到你!
error: base operand of ‘->’ has non-pointer type ‘std::vector<ClientMapStruct>’ if (input->data.size() != 0) { ^~
这个错误通常表示你在使用指针时出现了问题。根据错误信息看,`input`这个指针可能被错误地定义为一个`std::vector<ClientMapStruct>`类型的变量,而不是指向该类型变量的指针。
请检查`input`的定义,确保它是一个指向`std::vector<ClientMapStruct>`类型变量的指针,而不是一个该类型的变量。另外,也要确保`input`已经被正确地初始化,并且指向了有效的内存空间。