C++ 函数参数中的“初始值设定项值过多”[已关闭]

"Too Many Initializer Values" in C++ function parameters [closed]

提问人:Frazer Zero 提问时间:1/30/2020 最后编辑:Bhargav RaoFrazer Zero 更新时间:2/2/2020 访问量:14916

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

3年前关闭。

每次我尝试使用这些变量通过引用传递时,都会出现“初始值设定项值过多”的错误:

主文件。这是发生错误的地方,也是我遇到所有麻烦的地方。

#include <iostream>
#include <fstream>
#include "Header.h"
using namespace std;

int main() {

    std::string itemName;
    double itemPrice;
    double itemQuantity;
    double itemDiscount;

    //Opening input file
    ifstream infile;
    infile.open("InputFile.txt");

    infile >> itemName;
    infile >> itemPrice;
    infile >> itemQuantity;
    infile >> itemDiscount;

    //Opening output file
    ifstream outfile;
    outfile.open("OutputFile.txt");

    //This is where the error occurs, a red underline at "itemQuantity"
    double calculateCost(itemPrice, itemQuantity, itemDiscount);
}

函数定义。在这里,您可以看到我正在尝试使用“按引用传递”。

#include <iostream>

double calculateCost(double &price, double &quantity, double &discountPct) {

    //Placeholder code
    std::cout << "Hello world.\n";
}

页眉。我在这里也包含了参数的“&”符号。

#pragma once

double calculateCost(double &price, double &quantity, double &discountPct);
C++ 函数 参数 按引用传递

评论

1赞 NathanOliver 1/30/2020
投票关闭为错别字。去掉 中的返回类型。即double calculateCost(itemPrice, itemQuantity, itemDiscount);calculateCost(itemPrice, itemQuantity, itemDiscount);

答:

1赞 R Sahu 1/30/2020 #1

当您使用

double calculateCost(itemPrice, itemQuantity, itemDiscount);

编译器认为您正在尝试声明一个名为 的函数局部变量。此类变量不能由括号内的内容初始化。若要进行函数调用并捕获返回值,请使用calculateCost

double cost = calculateCost(itemPrice, itemQuantity, itemDiscount);
3赞 Vlad from Moscow 1/30/2020 #2

double calculateCost(itemPrice, itemQuantity, itemDiscount);

是 double 类型的标量对象的声明,其名称为标识符 calculateCost。删除类型说明符

calculateCost(itemPrice, itemQuantity, itemDiscount);

还要考虑到该函数应具有带有表达式的返回语句。