对象c++之前应为主表达式
expected primary expression before object c++
这是我的代码
#include "Square.h"
#include "tools.hpp"
ostream&
Square :: print(ostream& s)
{
return s << "Square [" << row << " " << column << "]" << endl;
}
ostream&
SqState :: print(ostream& sq)
{
return sq << "value: " << sq_value;
}
void testSquare();
void testSqState();
int main()
{
banner();
testSquare();
testSqState();
bye();
}
void testSqState()
{
SqState sq('-', 4, 0);
sq.print(ostream s); // << Error occurs here
}
void testSquare()
{
Square s(4, 0);
s.print(ostream st); // << Error occurs here
}
***之间的语句,出现错误。表示预期的主表达式s和预期的主要表达st
和广场.h有阶级广场和SqState。
请帮我,的实际问题在哪里
考虑此代码:
SqState sq('-', 4, 0); sq.print(ostream s);
您可以注意到SqState
有一个名为print()
的方法,它在这里定义:
ostream& SqState :: print(ostream& sq) { return sq << "value: " << sq_value; }
因此,这个print()
方法的参数是对ostream
(实际上是std::ostream
)实例的引用(&
)
您应该在调用站点提供该实例,并且可以选择std::cout
在标准控制台输出上打印文本:
sq.print(std::cout);
类似地,对于testSquare()
函数中的其他代码。
你可能想写一些类似的东西
void testSqState() {
SqState sq('-', 4, 0);
sq.print(std::cout);
}
void testSquare() {
Square s(4, 0);
s.print(std::cout);
}
**sq.print(ostream s);**
**s.print(ostream st);**
你不需要把ostream放在那里,假设s和st已经定义好了。
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 提升精神:解析布尔表达式并简化为规范范式
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 使用正则表达式regex_search在字符串中查找字符串
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 概念中的cv限定符需要表达式参数列表
- 为什么constexpr的性能比正常表达式差
- 对于结构,表达式必须是可修改的ivalue
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 将fold表达式与std::一起用于两个元组
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 标记 '","' 之前的预期主表达式
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 带有用户定义类的c++折叠表达式
- 即使使用调试编译标志,表达式也是"optimized out"
- holeMenuProgram.cpp:38:1 错误:'}'令牌之前的预期主表达式
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 这 4 个 lambda 表达式之间有什么区别?