错误C2679,std :: ofstream,无效如何解决?

时间:2015-12-01 20:32:16

标签: c++ void

这是我的代码。我不知道为什么我不能使用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;
}

1 个答案:

答案 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;

希望这是有道理的。