Thread: Savings Account class

  1. #1
    Registered User
    Join Date
    Mar 2012
    Posts
    98

    Savings Account class

    Alright I had everything working until I started to incorporate my interst rate I'll post my header and cpp to see if anyone can steer me straight.

    This is the error and I've tried tinkering quite a bit with no avail:
    error LNK2001: unresolved external symbol "private: static double SavingsAccount::annualInterestRate" (?annualInterestRate@SavingsAccount@@0NA)
    1>c:\Project2\Debug\Project2.exe : fatal error LNK1120: 1 unresolved externals

    Code:
    #include "SavingsAccount.h"
    #include <iostream>
    #include <iomanip>
    #include <fstream>
    
    using namespace std;
    extern ofstream fileout;
    
    // constructor function with 0 parameters
    
    SavingsAccount::SavingsAccount()
    {
     setFirstName("");
     setLastName ("");
     setBalance (0.0);
     setInterestRate (.05);
    }
    
    // constructor functions with 1 parameter
    
    SavingsAccount::SavingsAccount (string first, string last )
    {
     setFirstName (first);
     setLastName (last);
     setBalance (0.0);
     setInterestRate (.05);
    }
    
    // constructor function with 2 parameters
    
    SavingsAccount::SavingsAccount(string first, string last, double balance)
    {
     setFirstName (first);
     setLastName (last);
     setBalance (balance);
     setInterestRate (.05);
    }
    
     // calculate balance
    double SavingsAccount::calcNewBalance() 
    {
     monthlyRate = annualInterestRate/12;
     return (monthlyRate * savingBalance) + savingBalance;
    }
    
    // set functions
    void SavingsAccount::setInterestRate(double rate)
    {
     annualInterestRate = rate;
    }
    
    void SavingsAccount::setFirstName(string f)
    {
     firstName = f;
    }
    
    void SavingsAccount::setLastName(string l)
    {
     lastName = l;
    }
    
    // set balance
    void SavingsAccount::setBalance (double b)
    {
     savingBalance = b;
     
    }
    
    // get functions
    double SavingsAccount::getInterestRate(double rate)
    {
     return annualInterestRate;
    }
    
    string SavingsAccount::getFirstName() 
    {
     return firstName;
    }
    
    string SavingsAccount::getLastName() 
    {
     return lastName;
    }
    
    // get balance
    double SavingsAccount::getBalance() const
    {
     return savingBalance;
    }
    
    // print function
    void SavingsAccount::printData()
    {
     cout<< "\nName: " << firstName <<" "<< lastName;
     cout<< "\nBalance: " << savingBalance;
     cout<< "\nNew Balalce: " << calcNewBalance();
    }
    Code:
    //SavingsAccount.h
    //Defintion of class SavingsAccount
    #ifndef SAVINGSACCOUNT_H
    #define SAVINGSACCOUNT_H
    
    #include <string>
    using namespace std;
    
    class SavingsAccount
    {
    public:
    
     //overloaded constructor functions
     SavingsAccount ();
     SavingsAccount (string, string);
     SavingsAccount (string, string, double);
     
     //set functions
     void setFirstName ( string );
     void setLastName ( string );
     void setBalance ( double );
     void static setInterestRate ( double );
     
     //get functions
     string getFirstName();
     string getLastName();
     double getBalance() const;
     static double getInterestRate (double);
    
     //calculation functions
     double calcNewBalance();
    
     //print functions
     void printData();
    
    private:
    
     string firstName;
     string lastName;
     double savingBalance;
     double monthlyRate;
     static double annualInterestRate;
     int objectnumber;
     
    };
    #endif

  2. #2
    Registered User
    Join Date
    May 2010
    Posts
    4,632
    Where are you initializing annualInterestRate? You must initialize this variable somewhere outside the class definition.

    Jim

  3. #3
    Registered User
    Join Date
    Mar 2012
    Posts
    98
    Ah thanks I missed that. I'm struggling to get my destructor to work. It should let the user know the object no longer exists.

    header file
    Code:
    //destructor
        ~SavingsAccount();
    .cpp code

    Code:
    //destructor
    SavingsAccount::~SavingsAccount()
    {
    cout << "Object " << objectnumber << "no longer exists"<<endl;
    
    fileout << "Object " << objectnumber << "no longer exists" <<endl;
    }

  4. #4
    Registered User
    Join Date
    Mar 2012
    Posts
    98
    No error, just no output

  5. #5
    Registered User
    Join Date
    May 2010
    Posts
    4,632
    Show how you are using the class.

    Jim

  6. #6
    Registered User
    Join Date
    Mar 2012
    Posts
    98
    Main

    Code:
    #include <iostream>
    #include <iomanip>
    #include <fstream>
    #include "SavingsAccount.h"
    
    using namespace std;
    ofstream fileout;
    
    int main()
    {
     fileout.open("F:\\SavingsOut.txt");
     
     // declare objects
     SavingsAccount Saver1 ("Margaret", "Olson", 2000, 1);
     SavingsAccount Saver2 ("Debra", "Baxter", 2);
     SavingsAccount Saver3 ("","",3);
     
     Saver1.printData();
     Saver2.printData();
     Saver3.printData();
     
     // set new parameters for Saver2
     Saver2.setBalance (5000);
     
     // set new parameters for Saver3
     Saver3.setFirstName ("Arturo");
     Saver3.setLastName ("Ortiz");
     Saver3.setBalance (10000);
     
     // print new data for the objects
     cout<<"\n\nNew data for Saver 2:";
     fileout<<"\n\nNew data for Saver 2:";
     Saver2.printData();
     
     cout<<"\n\nNew data for Saver 3:";
     fileout<<"\n\nNew data for Saver 3:";
     Saver3.printData();
     
     int c;
     cin>> c;
    }

  7. #7
    Registered User
    Join Date
    May 2010
    Posts
    4,632
    You won't usually see the destructor working when it goes out of scope of the main() function. If you put it in a block you will probably be able to see it work. Or call create your class in another function.
    Code:
    int main()
    {
    
       {
          SavingsAccount Saver1 ("Margaret", "Olson", 2000, 1);
       }
    
       return(0);
    }
    Jim

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. savings with statics c++
    By kokoro in forum C++ Programming
    Replies: 3
    Last Post: 03-22-2010, 08:22 PM
  2. "Account class" problem
    By freddyvorhees in forum C++ Programming
    Replies: 8
    Last Post: 07-27-2008, 08:31 AM
  3. Class Program: Help with Calculating Account Usage
    By ThePhenom in forum C++ Programming
    Replies: 11
    Last Post: 10-03-2007, 02:26 PM
  4. Problems with Bank account class
    By xianglin139 in forum C++ Programming
    Replies: 4
    Last Post: 08-11-2006, 05:19 AM
  5. Help In main with Saving Account Class
    By Agnesa in forum C++ Programming
    Replies: 0
    Last Post: 02-16-2003, 10:36 PM