2016-11-30 6 views
0

Я новичок в C++, и я пытаюсь запустить проект, каждый раз, когда я создаю новый экземпляр класса ATM, он вводит идентификатор учетной записи на 1 и отображает текущий идентификатор учетной записи. Это мой код:Как я могу работать с этими классами?

// Bank ATM.cpp : Defines the entry point for the console application. 
#include "stdafx.h" 
#include "ATM.h" 


int main() 
{ 
    ATM abunch[15]; 
    for (int i = 0; i < 15; i++){ 
     abunch[i] = ATM(); 
    } 
    return 0; 
} 


//ATM.h 
#include "stdafx.h" 
#ifndef atm 
#define atm 
class ATM { 
    static int accountID; 

public: 
    ATM(); 
}; 
int ATM::accountID = 0; 
#endif 


//ATM.cpp 
#include "stdafx.h" 
#include "ATM.h" 
#include <iostream> 
ATM::ATM() { 
    ++accountID; 
    std::cout << accountID; 
} 

Я получаю следующее сообщение об ошибке: enter image description here

Что я делаю неправильно?

+1

Move 'ИНТ ATM :: ACCOUNTID = 0;' в файл .cpp – AndyG

ответ

0

Поскольку указан в файле .h, за пределами класса, он объявляется глобально каждый раз, когда этот файл включен в другой файл. Вы включаете его дважды; в main.cpp и в ATM.cpp. Это не-нет.

Декларация должна перейти к ATM.cpp

//ATM.h 
#include "stdafx.h" 
#ifndef atm 
#define atm 
class ATM { 
    static int accountID; 

public: 
    ATM(); 
}; 
int ATM::accountID = 0; // <--- remove this line 
#endif 


//ATM.cpp 
#include "stdafx.h" 
#include "ATM.h" 
#include <iostream> 
int ATM::accountID = 0; // <----put it here 
ATM::ATM() { 
    ++accountID; 
    std::cout << accountID; 
} 
+0

Если я не #include заголовок в The BankATM.cpp файл, он говорит «Идентификатор не найден» в банкомате. –

+0

Если я помещаю код в ATM.cpp, это не значит, что я должен #include ATM.cpp в BankATM.cpp, который купит компилятор для ненужного копирования кода. –

+0

@DustinSmith, я обновил свой ответ. – CAB

 Смежные вопросы

  • Нет связанных вопросов^_^