2016-11-10 22 views
0

クラスをコンパイルしようとするとこのエラーが発生します。私はうまくいけば、誰かが私がここで"変数"はこのスコープで宣言されていません

g++ -c main.cc 
g++ -c BankControl.cc 
g++ -c Bank.cc 
g++ -c Account.cc 
g++ -c View.cc 
g++ -c AcctList.cc 
g++ -c Customer.cc 
g++ -c CustArray.cc 
g++ -c Transaction.cc 
Transaction.cc: In function ‘int getTransID()’: 
Transaction.cc:18:34: error: ‘transID’ was not declared in this scope 
int getTransID()  { return transID; } 
           ^
Transaction.cc: In function ‘TransType getTType()’: 
Transaction.cc:19:34: error: ‘tType’ was not declared in this scope 
TransType getTType() { return tType; } 
           ^
Transaction.cc: In function ‘TransState getTState()’: 
Transaction.cc:20:34: error: ‘tState’ was not declared in this scope 
TransState getTState() { return tState; } 
           ^
Transaction.cc: In function ‘std::__cxx11::string getDate()’: 
Transaction.cc:21:34: error: ‘date’ was not declared in this scope 
string getDate()  { return date;  } 
           ^
Transaction.cc: In function ‘int getTAcctNum()’: 
Transaction.cc:22:34: error: ‘tAcctNum’ was not declared in this scope 
int getTAcctNum()  { return tAcctNum; } 
           ^
Transaction.cc: In function ‘float getTAmount()’: 
Transaction.cc:23:34: error: ‘tAmount’ was not declared in this scope 
float getTAmount()  { return tAmount; } 
           ^
Transaction.cc: In function ‘void setDate(std::__cxx11::string)’: 
Transaction.cc:28:3: error: ‘date’ was not declared in this scope 
    date = d; 
^
Makefile:31: recipe for target 'Transaction.o' failed 
make: *** [Transaction.o] Error 1 

を問題を把握することができ、関数のプロトタイプと変数が正しくinitilizedされていることを確認てきた。ここ

#ifndef TRANSACTION_H 
    #define TRANSACTION_H 

    #include <string> 
    using namespace std; 

    #include "defs.h" 

    class Transaction 
    { 
     public: 
     Transaction(TransType = TTERROR, TransState = TSERROR,int = 0 ,float = 0); 
     int   getTransID(); 
     TransType getTType(); 
     TransState getTState(); 
     string  getDate(); 
     int   getTAcctNum(); 
     void  setDate(string); 
     float  getAmount(); 
     private: 
     static int nextTransID; 
     int   transID; 
     TransType tType; 
     TransState tState; 
     string  date; 
     int   tAcctNum; 
     float  tAmount; 


    }; 

    #endif 

私のヘッダファイルである私のソースファイルが

です
#include "Transaction.h" 
#include "defs.h" 

#include <string> 
using namespace std; 

int Transaction::nextTransID = 2001; 

Transaction::Transaction(TransType t, TransState s, int acct, float amount) 
{ 
    transID = nextTransID++; 
    tType  = t; 
    tState = s; 
    tAcctNum = acct; 
    tAmount = amount; 
} 

int getTransID()  { return transID; } 
TransType getTType() { return tType; } 
TransState getTState() { return tState; } 
string getDate()  { return date;  } 
int getTAcctNum()  { return tAcctNum; } 
float getTAmount()  { return tAmount; } 


void setDate(string d) 
{ 
    date = d; 
} 

私は問題

+0

ソースファイルでは、関数はグローバル関数であり、 'Transaction'クラスのメンバ関数ではありません。 –

答えて

6

これが何であるかにちょっと失われています:

int getTransID()  { return transID; } 

は、あなたのクラスとは関係がありません。これはグローバルな機能です。あなたが意味

int Transaction::getTransID() { return transID; } 

をまた、その関数(および他のゲッターは)彼らは、オブジェクトを変更しないことを知らせるためにconstなされるべきです。

+0

ありがとう、本当にすみません。私はそれに気付かなかった。私はすべての機能について気付かなかった。 – AyeJay

関連する問題