C 必须完全参数
c++ must take exactly one argument
本文关键字:参数 更新时间:2023-10-16
我是一个新的C 学习者。现在,我的代码有问题,但我不知道如何调试。请帮我。它是form.h
文件。我尝试移动Val和运营商Lt;<形式。
class Form{
friend ostream& operator << (ostream&, const Form&);
int prc;
int fmt;
double val;
public:
explicit Form(int p=6):prc(p){
fmt = 0;
wdt = 0;
}
Form& scientific(){
fmt = ios_base::scientific;
return *this;
}
Form& precision(int p){
prc = p;
return *this;
}
Form& fill(char);
std::ostream& operator<<(std::ostream& os, const Form& bf){
ostringstream s;
s.precision(bf.prc);
s.setf(static_cast<ios_base::fmtflags>(bf.fmt), ios_base::floatfield);
s.setf(bf.fmt,ios_base::floatfield);
s << bf.val;
return os << s.str() ;
}
};
这是我的主要cpp:
Form gen4(4); // general format, precision is 4
void f(double d)
{
Form sci8 = gen4;
sci8.scientific().precision(8);
Form fix8 = gen4;
fix8.fixed().precision(8);
cout << d << sci8(d) << fix8(d) << d;
}
当我编译时,它说:
error: ‘std::ostream& Form::operator<<(std::ostream&, const Form&)’ must take
exactly one argument
error: no match for call to ‘(Form) (double&)’
<< "gen4 = " << gen4(d) << endl
尝试
// vvvvvv
friend std::ostream& operator<<(std::ostream& os, const Form& bf)
// ^^^^^^
{
ostringstream s;
// ...
实施操作员。
如果您忘记了类的Boby内部的friend
关键字,则operator<< (std::ostream &, Form const &)
是Form
的成员,<<
的左侧的参数隐含在Form
对象上,并且两个声明的参数均在右侧。
错误:'std :: ostream&amp;form ::操作员&lt;&lt;(std :: ostream&amp;,const form&amp;(必须采取正是一个参数
这是定义朋友函数的两种方法:
课内:
class Form
{
friend ostream& operator << (std::ostream& os, const Form& bf)
{
// do something
}
};
班级外:
class Form
{
friend ostream& operator << (std::ostream& os, const Form& bf);
};
ostream& operator << (std::ostream& os, const Form& bf)
{
//do something
}
错误:与"(form((double&amp;("呼叫无匹配&lt;&lt;" gen4 ="&lt;&lt;gen4(d(&lt;&lt;endl
使用操作员超载,类似于此
class Form
{
double operator()(double i)
{
//do something
}
};
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 如何将enable-if与模板参数和参数包一起使用