这是我的代码。我不知道为什么我不能使用rez <<
。我该如何解决这个问题?我应该包括什么吗?
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;
void SS(int a, int b, int &SPP, int &SP) {
SPP = a * b;
SP = a * 2 + b * 2;
}
int main()
{
ifstream fd("dviratininkas.txt");
ofstream rez("rezultatas.txt");
int n, a, b, SP, SPP;
fd >> n;
for (int i = 1; n > i; i++){
fd >> a;
fd >> b;
rez << SS(a, b, SP, SPP) << endl;
}
system("PAUSE");
return 0;
}
答案 0 :(得分:2)
从语义的角度来看,
rez << SS(a, b, SP, SPP) << endl;
相当于
auto temp = SS(a, b, SP, SPP);
rez << temp << endl;
即使第一行没有编译,因为SS
的返回类型是void
。
让我们使用一个函数返回一个可以与rez
一起使用的值。
double square(double x)
{
return x*x;
}
您可以使用:
rez << square(0.2) << endl;
这相当于:
auto temp = square(0.2);
rez << temp << endl;
我们不喜欢
rez << square(0.2) << endl;
相当于:
rez << 0.2 << endl;
出于同样的原因,我们不喜欢
rez << SS(a, b, SP, SPP) << endl;
相当于:
rez << a << b << SP << SPP << endl;
希望这是有道理的。