2011-02-05 3 views
0

Я делаю основную программу, которая принимает некоторый входной сигнал и выводит его обратно, но я получаю странную ошибку о моей статической variable.Please помочь мне out.ThanksСтрока ошибки статический член

Код:

/* 

    Date:5th January 2011 
    Programmer:Fahad 
*/ 
#include <iostream> 
#include <string> 
using namespace std; 
class Persons //A class that will store the name,addresses and id numbers of the users 
{ 
    private: 
     string name_; 
     string address_; 
     int id_number_; 

    public: 
     static int count;//This is the count of the objects created 
     Persons(); 
     void getData(int n); 
     void displayData(int n); 
     //~Persons(); 
}; 
static int count;//initializing the static member 
int main() 
{ 
    cout << "Enter Number Of Persons:"; 
    int n;//This is the number of objects that the user wants to make. 
    cin >> n; 
    Persons *ptr;//A pointer that will be used for the dynamic memory allocation. 

    /*Exception Handling*/ 
    //////////////////////////////////////////////////////////////////// 
    try 
    { 
     //ptr=new [sizeof(Persons) * n]; 
     ptr=new Persons[n]; 
    } 
    catch(bad_alloc xa) 
    { 
     cout<<"Sorry,Program Can Not Continue"; 
     cin.get(); 
     exit(1); 
    } 
    ///////////////////////////////////////////////////////////////////// 
    for(int i = 0; i< n; i++) 
    { 
     ptr[i].getData(n); 
    } 
    for(int j = 0; j< n; j++) 
    { 
     ptr[j].displayData(n); 
    } 
    cin.get(); 
    delete[] ptr; 
    return 0; 
} 
/*Function Definitions*/ 
Persons::Persons() 
{ 
    name_=""; 
    address_=""; 
    id_number_=0; 
    count++; 
} 
void Persons::getData(int n) 
{ 

     cout<<"Enter Name (Press '$' To Exit):"; 
     getline(cin,name_,'$'); 
     cout<<endl<<"Enter Address (Press '$' To Exit):"; 
     getline(cin,address_,'$'); 
     cout<<endl<<"Enter Identitiy Card Number:"; 
     cin>>id_number_; 

} 
void Persons::displayData(int n) 
{ 

     cout<<"Name:"<<name_; 
     cout<<endl<<"Address:"<<address_; 
     cout<<endl<<"Identitiy Card Number:"<<id_number_; 

} 

Ошибка:

------ Build started: Project: new, Configuration: Debug Win32 ------ 
Compiling... 
program.cpp 
c:\documents and settings\1\my documents\visual studio 2008\projects\new\new\program.cpp(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
Build log was saved at "file://c:\Documents and Settings\1\My Documents\Visual Studio 2008\Projects\new\new\Debug\BuildLog.htm" 
new - 1 error(s), 0 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 
? 

ответ

2

вместо

static int count;//initializing the static member 

записи

int Persons::count; 
1

Вам необходимо определить статическую переменную как int Persons::count; Кроме того, ваш getData & displayData неверно. Вам необходимо использовать оператор -> вместо оператора ..

2

Ваша программа имеет две проблемы

Проблемные нет 1) Missing декларации для exit(1);.
Решение: Включить <cstdlib>

Проблема № 2) статический член count объявлен, но не определен.
Решение: Определите элемент как int Persons::count; вместо static int count.

+0

Программа работает без них, включая заголовок.: S –

+0

@fahad: Не следует. –

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