我正在制作一个基本程序,需要一些输入并将其打印回来但是我的静态变量出现了奇怪的错误。请帮帮我。谢谢
代码:
/*
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 ==========
?
答案 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
语法错误。您需要使用->
运算符而不是.
运算符。