当我运行程序时,我收到此错误。
c ++错误c2373'readBalance'重新定义不同的类型修饰符
我想阅读文件中的内容然后写。
// ReadAndWrite.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
double readBalance;
double balance;
int main ()
{
double readBalance();
double balance = 0;
ifstream readfile;
readfile.open("renatofile.txt");
char output [100];
if (readfile.is_open())
{
while(!readfile.eof())
{
readfile>>output;
}
}
readfile.close();
balance=atof(output);
return balance;
}
可能因为我正在恢复平衡吗?
答案 0 :(得分:3)
我猜你想要做的是将readBalance定义为一个函数,然后从main调用它,如下所示:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstdlib> // you need this for atof
using namespace std;
double readBalance(); // this is a function prototype
double balance; // this is a global variable - you don't need this at all
int main ()
{
cout << readBalance() << endl; // this will print the balance
return 0;
}
double readBalance()
{
double balance = 0; // this local variable hides the global...
ifstream readfile;
readfile.open("renatofile.txt");
char output [100];
if (readfile.is_open()) {
while(!readfile.eof()) {
readfile>>output;
}
}
readfile.close();
balance=atof(output);
return balance;
}
请注意,您已在全局和本地声明balance
,这可能不是您想要的。
顺便说一下,你也错过了atof
函数(cstdlib)所需的包含。
答案 1 :(得分:1)
这是因为
double readBalance();
我不知道你为什么把它放在那里。
答案 2 :(得分:0)
放置在本地范围内的函数声明仍然使用外部链接声明名称,而不是本地名称。这意味着您的本地double readBalance();
声明将readBalance
声明为全局函数的名称。与此同时,您上面几行将readBalance
声明为全局变量。
由于两个实体都是全球(即具有外部链接),因此它们相互冲突。此冲突是触发错误消息的原因。
您可能会注意到balance
也在本地范围内“重新声明”。使用balance
时,不会发生冲突,因为在本地范围balance
中声明为变量。放置在本地范围内的变量声明会生成没有链接的本地名称。因此,局部变量balance
完全独立于上面声明的全局变量balance
。这是完全合法的。
所以,问题是为什么你试图同时将readBalance
声明为变量和函数?什么是readBalance
应该是什么(因为你从来没有在你的代码中使用它)?