字符串静态成员错误

时间:2011-02-05 07:57:05

标签: c++ visual-studio-2008

我正在制作一个基本程序,需要一些输入并将其打印回来但是我的静态变量出现了奇怪的错误。请帮帮我。谢谢

代码:

/*

    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 ==========
?

3 个答案:

答案 0 :(得分:2)

而不是

static int count;//initializing the static member

int Persons::count;

答案 1 :(得分:2)

你的程序有两个问题

问题1)exit(1);缺少声明。
解决方案:包含<cstdlib>

问题2)静态成员count已声明但未定义。
解决方案:将成员定义为int Persons::count;,而不是static int count

答案 2 :(得分:1)

您需要将静态变量定义为int Persons::count;此外,您的getData&amp; displayData语法错误。您需要使用->运算符而不是.运算符。