【问题标题】:Error saying, "statement cannot resolve address of overloaded function"错误提示,“语句无法解析重载函数的地址”
【发布时间】:2014-01-31 01:04:32
【问题描述】:

我是一个初学者程序员,所以这看起来很乱,但我不断遇到标题中提到的问题。无论我尝试将endl放在哪里;它一直给我同样的错误。此外,当我运行代码时,我的第二家商店的总数是正确的,但第一家商店的总数却不是。关于如何解决这个问题的任何想法?我在 Windows 7 计算机上使用代码块。

#include <iostream> //Allows cout/cin
#include <ctime> //Allows time
#include <iomanip> //Allows setprecision

using namespace std;

int main()
{
    //Include header

    //Input variables
    double widgetStores;
    double numberSoldFirst1;
    double numberSoldFirst2;
    double numberSoldSecond1;
    double numberSoldSecond2;
    double widgetsLeftS1W2;
    double widgetsLeftS2W1;
    double widgetsLeftS2W2;

    //Start Clock
    clock_t begin, end;
    double time_spent;
    begin = clock();

    //Prompt for total number in stores

    cout << "Total number of widgets at each store starting with :";
    cin >> widgetStores;

    double widgetStore1=widgetStores;
    double widgetStore2=widgetStores;
    double widgetsLeftS1W1;


    //Prompt for amount sold during first and second week

    cout << "How many widgets were sold at Store 1 the first week? ";
    cin >> numberSoldFirst1;
    cout << "How many widgets were sold at Store 1 the 2nd week? ";
    cin >> numberSoldSecond1;
    cout << "How many widgets were sold at Store 2 the first week? ";
    cin >> numberSoldFirst2;
    cout << "How many widgets were sold at Store 2 the 2nd week? ";
    cin >> numberSoldSecond2;

    //Calculate Number of widgets
    widgetsLeftS1W1-=(widgetStore1-numberSoldFirst1);
    widgetsLeftS1W2-=(numberSoldFirst1-numberSoldSecond1);
    widgetsLeftS2W1-=(widgetStore2-numberSoldFirst2);
    widgetsLeftS2W2-=(numberSoldFirst2-numberSoldSecond2);

    //Display Values
    cout << "Store 1 has " << widgetsLeftS1W2 << " widgets left after the 2nd week.";
    cout << "Store 2 has " <<widgetsLeftS2W2 << " widgets left after the 2nd week.";

    //Show time elapsed
    end = clock();
    time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    cout << setprecision(2) << fixed << "****Elapsed time:" <<time_spent/60 <<        "minutes****";
    return 0;

【问题讨论】:

  • 你能显示导致错误的行吗?
  • 我在你的程序中看不到任何 endl。粘贴您遇到错误的代码。
  • 任何我放 endl 的地方都会导致错误,就像我在每个 cin 和 cout 之后都需要一个,但如果我把它们放在那里就会导致错误。
  • 之后每个cin?如:cin &gt;&gt; something &gt;&gt; endl;?
  • 在用所有-= 行减去它们之前,您还没有初始化任何widgetsLeftS1W1 形式的变量。

标签: c++ function overloading


【解决方案1】:

你有没有尝试过类似的东西

cout << "Total number of widgets at each store starting with :";
cin >> widgetStores;
cout << endl; //Added this

cin 没有

编辑:我发现了您遇到的错误。我猜你是想按字面意思输入线条

结束;

这不会去任何地方......

【讨论】:

  • 这毫无意义,因为输入操作无论如何都会以换行符结束(因为您必须在输入被接受之前按 Enter 键)。
  • 问题询问如何让endl 工作。不是它是否相关。也许他想在每对输入/输出之间留一行空间。
【解决方案2】:

这个程序唯一的编译错误是你在初始化它们之前使用了widgetsLeftS1W1widgetsLeftS1W2widgetsLeftS2W1widgetsLeftS2W2

您可能需要= 而不是-=

当你说

widgetsLeftS1W1 -= (widgetStore1-numberSoldFirst1);

你真正的意思是

widgetsLeftS1W1 = widgetsLeftS1W1 - (widgetStore1-numberSoldFirst1);

计算机不知道 widgetsLeftS1W1 的值,所以它给你错误。


结论:使用

widgetsLeftS1W1 = (widgetStore1 - numberSoldFirst1); 

【讨论】:

  • 这不是编译错误,实际上甚至不需要诊断。这是未定义的行为,但您从绝大多数编译器中得到的最好结果就是警告。
  • @jerry 这绝对是一个编译错误。看截图
  • 虽然我应该准确地说标准不要求将其视为错误,但我坚持我的断言,即大多数编译器只会发出默认情况下警告(如果有的话)。 GCC happily compiles it,例如。您似乎正在使用 Visual Studio,即使在 C4700 is only a warning by default。我猜你已经打开了“将警告视为错误”选项。
【解决方案3】:

尝试初始化的值

widgetsLeftS1W1
widgetsLeftS1W2
widgetsLeftS2W1
widgetsLeftS2W2

在顶部声明它们时使用零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多