错误:"->"的基本操作数具有非指针类型"const"
error: base operand of ‘->’ has non-pointer type ‘const’
我正在使用ostream运算符编写一个c ++链表,但我被卡住了。 我做错了什么?
// Train class
class Car{
public:
void print(ostream&) const;
friend std::ostream &operator<<(std::ostream&, const Car&);
};
void Car::print(ostream& out) const{
out << "OK" << endl;
}
ostream& operator<<(ostream& os, const Car& car){
os << car->print(os);
return os;
}
错误:"->"的基本操作数具有非指针类型"const Car">
make: ***[Car.o] 错误 1
我尝试过的事情:
1)操作系统<<汽车>打印(*os);
2) 操作系统<<car.print(os);情况变得更糟
我尝试过的事情:
1) 操作系统<<汽车>打印(*OS);
base operand of ‘->’ has non-pointer type ‘const Car’
错误应该很清楚。您已在非指针(不会重载该运算符的类型)上应用了间接成员访问运算符->
。这是你不能做的事情。大概,你打算打电话给Car::print
。这可以使用常规成员访问运算符.
ostream& os print(*os)
这是错误的。ostream
没有间接寻址运算符。由于print
接受ostream&
作为参数,因此您可能打算将os
传递给函数。
void Car::print
Car::print
返回void
即它不返回任何值。但是,您将返回值插入到流中。不能将void
插入到流中。如果您打算从函数返回某些内容,请将返回类型更改为要插入到流中的任何内容。或者,如果您只打算将内容插入函数中的流中,则直接不要插入函数的返回值:
当我们解决所有这三件事时,我们最终会得到
car.print(os);
最后,Car::print
未在Car
的定义中声明。必须在类定义中声明所有成员函数。声明应如下所示:
class Car{
public:
void print(ostream& out) const;
// ...
}
相关文章:
- 如果我在指针中使用 ++ 操作数,我的值就会出错
- 错误:"->"的基本操作数具有非指针类型"const"
- 类指针和类指针指向二进制运算符+的类型无效的操作数
- '->' 的基本操作数具有非指针类型'QStandardItemModel'
- '->' 的基本操作数具有非指针类型
- 当分配运算符的操作数左操作数时,为什么数组名称不腐烂到指针
- "->"的基本操作数具有非指针类型错误
- "->"的基本操作数具有非指针类型
- 解析指向位操作数 C++ 的无符号 char 指针
- 编译器错误,链表:错误:"->"的基本操作数具有非指针类型"IntNodeType"
- 错误:"*"的操作数必须是指针
- 基操作数具有非指针类型,但它是一个指针
- C++ 指针算术。没有运算符"+" 匹配这些操作数
- 基本操作数具有非指针类型 G++ 编译器错误
- 如果加法表达式的第一个操作数可转换为指针和整数,则选择哪个转换
- 间接操作需要指针操作数
- LLVM:创建一个带有空指针操作数的CallInst
- c++中使用指针访问和操作数组
- "->"的基本操作数具有非指针类型
- c++,通过指针传递泛型数组,继承,错误:没有接受右操作数的操作符