debug 编译出错,并且随便修改一处代码就编译成功。

xlshn 2011-12-17 08:42:59
清理解决方案后,debug编译又出错,是怎么回事。release编译正常。

1>p4221.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Checking::Checking(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,double)" (??0Checking@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@N@Z),该符号在函数 _main 中被引用
account.h
#ifndef HEADER_ACCOUNT
#define HEADER_ACCOUNT

#include<string>
using namespace std;
class Account{
string acntNumber;

public:
double balance;
Account(string acntNo,double balan=0);
virtual void display()const;
virtual void withdrawal1();
};
#endif

checking.h
#ifndef HEADER_CHECKING
#define HEADER_CHECKING

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


class Checking:public Account{

public:
Checking(string acntNo,double balan=0.0);

void withdrawal1();
void display()const;

};
#endif

savings.h
#ifndef HEADER_SAVING
#define HEADER_SAVING

#include<iostream>
#include"account.h"
class Savings:public Account{
static int minBalance;
public:
Savings(string acntNo,double balan=0.0):Account(acntNo,balan){}
void display()const;

void withdrawal1();
};
#endif

account.cpp
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
#include"account.h"
Account::Account(string acntNo,double balan):acntNumber(acntNo),balance(balan){}
void Account::display()const{
cout<<"Account:"+acntNumber+"="<<balance<<"\n" ;
}
void Account::withdrawal1(){
ifstream inwithdrawal1("c:\\withdrawal.txt",ios::in);
string acntNo1;int amount1;
for(;inwithdrawal1>>acntNo1>>amount1; )
if(!((acntNo1=="x")&&(amount1==0))){
if(acntNumber==acntNo1){
balance-=amount1;
}
}
}

checkings.cpp
#include"checkings.h"
#include <iostream>
using namespace std;

Checking::Checking(string acntNo,double balan):Account(acntNo,balan){}//,remittance(other)
void Checking::display()const{
cout<<"Checking ";
Account::display();
}


void Checking::withdrawal1(){
Account::withdrawal1();
}

#include"checkings.h"
#include"savings.h"
//#include<iostream>
#include<fstream>
#include<string>
#include<vector>

using namespace std;

int main(){
vector<Savings*> sav;
vector<Checking*> chec;

ifstream in("c:\\p4421.txt",ios::in);
string acntNo;double amount;
for(;in>>acntNo>>amount;)//
{
if(!(acntNo=="x"&&amount==0))
if(!((static_cast<int>(acntNo.find("savings"))==-1)))
{ (sav.push_back(new Savings(acntNo,amount)));}
else
{
(chec.push_back(new Checking(acntNo,amount)));
}





}
for(vector<Savings*>::iterator it=sav.begin();it!=sav.end();++it){
(*it)->display();
(*it)->withdrawal1();
(*it)->display();
}
for(vector<Checking*>::iterator it=chec.begin();it!=chec.end();it++){
(*it)->display();
(*it)->withdrawal1();
(*it)->display();
}
for(vector<Savings*>::iterator it=sav.begin();it!=sav.end();it++)
delete *it;
for(vector<Checking*>::iterator it=chec.begin();it!=chec.end();it++)
delete *it;
system("pause");
}

savings.cpp
#include"savings.h"


int Savings::minBalance=0;

void Savings::display()const{
cout<<"Savings ";
Account::display();
}


void Savings::withdrawal1(){
Account::withdrawal1();
}


p4421.txt
savings123 70000
checking661 20000
savings128 2000
savings131 5000
checking681 200000
checking688 10000
x 0
withdrawal.txt
savings123 5000
savings131 5060
checking661 30000
checking688 1000
x 0
...全文
87 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
quwei197874 2011-12-17
  • 打赏
  • 举报
回复
构造函数前加个explicit

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧