2013-11-18 4 views
0

Я работаю над файлом заголовка за последние пару часов, и у меня проблема, выводящая значение, которое хранится в конструкторе. Значение - это int, но я не могу сохранить число выше 7, и когда я вывожу его с помощью функции, она выдает совершенно другое число. Я делаю все это в файле заголовка и используя функцию в .cpp для вывода данных. Я довольно новичок в C++, поэтому это, наверное, любительская ошибка. Любая помощь будет оценена!Использование int в файле заголовка?

Заголовочный файл ----

#ifndef PATIENT_DEMO_CLASS 
#define PATIENT_DEMO_CLASS 

// system defined preprocessor statement for cin/cout operations 
#include <iostream.h> 

// programmer defined preprocessor statement for setreal operation 
#include "textlib.h" 

// programmer defined preprocessor statement for String 
#include "tstring.h" 

class PatientDemographicInformation 
{ 
    private: 
int patientDateOfBirth; 

public: 
// constructor 
PatientDemographicInformation(int dateOfBirth); 

// returns the patient's age 
int getPatientAge(); 
}; 
PatientDemographicInformation::PatientDemographicInformation(int dateOfBirth) 
{ 
    patientDateOfBirth = dateOfBirth; 
} 

int PatientDemographicInformation::getPatientAge() 
{ 
    return patientDateOfBirth; 
} 
#endif 

.cpp ----

#include <iostream.h> 
#include <tstring.h> 
#include "PatientDemographicInformation.h" 

int main() 
{ 
    PatientDemographicInformation john(11161990); 

    cout << john.getPatientAge() << endl; 

    return 0; 
} 
+0

Можете быть в состоянии помочь, если вы покажете, что вы пробовали до сих пор. –

+2

Без какого-либо кода, чтобы посмотреть. Я сомневаюсь, что вы получите полезную помощь. – jpw

+0

Хорошо, добавлен код. Ум, давая ему взглянуть? – ObsDev

ответ

4

Pure догадка, здесь.

В C, C++ и многих других языках целые числа, записанные с ведущим 0, являются октал; то есть, они находятся в базе 8, а не основанием 10.

Если вы делаете что-то вроде:

dateOfBirth = 070503; 

то, что будет интерпретироваться как восьмеричное число (28995 в десятичной системе). Так как восьмеричные числа могут иметь только цифры 0-7, следующий будет незаконным:

dateOfBirth = 090503; 

Я предлагаю вам не кодировать даты в таком виде, если это то, что вы делаете.

+0

Огромное вам спасибо, моя первоначальная дата, которую я вводил, начиналась с нуля. Много времени и разочарований сохранилось, спасибо всем. – ObsDev

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