一个联想数组的问题
---------------------------------------assoc.hpp
class Assc_array{
struct Item{
char *name;
long tel_num;
};
Item *table;
int max;
int items;
public:
Assc_array(){}
Assc_array(int);
long &oprator[](char *);
void printAll();
};
-----------------------------------------assoc.cpp
#include<iostream>
using namespace std;
#include"assoc.hpp"
Assc_array::Assc_array(int nm=0)
{
max=nm;
items=0;
table=new Item[max];
}
long & Assc_array::operator[](char *nm)
{
Item *pi;
for(pi=table;pi<table+items;pi++)
if(strcmp(pi->name,nm)==0)
return pi->tel_num;
pi=table+items++;
pi->name=new char[strlen(nm)+1];
strcpy(pi->name,nm);
pi->tel_num=0;
return pi->tel_num;
}
void main()
{
for(int i=0;i<items;i++)
cout<<table[i].name<<':'<<table[i].tel_num<<'\n';
}
--------------------------------lianxiang.cpp
#include<iostream>
using namespace std;
#include"assoc.cpp"
void main()
{
Assc_arrau tel_num_table(5);
tel_num_table["Zhang"]=7075461
tel_num_table["Li"]=4047658
tel_num_table["Tan"]=2595121
tel_num_table["Cai"]=7732435
cout<<"Zhang:"<<tel_num_table["Zhang"]<<'\n';
cout<<"Tan:"<<tel_num_table["Tan"]<<'\n';
cout<<"Cai:"<<tel_num_table["Cai"]<<'\n';
tel_num_table.printAll();
}
有很大问题
[解决办法]
你写代码可得加强,毛病不少
把下面代码放到一个cpp中编译能通过
- C/C++ code
class Assc_array{ struct Item{ char *name; long tel_num; }; Item *table; int max; int items; public: Assc_array(){} Assc_array(int); long &operator[](char *); void printAll(); }; #include <iostream > using namespace std; //#include"assoc.hpp" Assc_array::Assc_array(int nm=0) { max=nm; items=0; table=new Item[max]; } long & Assc_array::operator[](char *nm) { Item *pi; for(pi=table;pi <table+items;pi++) if(strcmp(pi->name,nm)==0) return pi->tel_num; pi=table+items++; pi->name=new char[strlen(nm)+1]; strcpy(pi->name,nm); pi->tel_num=0; return pi->tel_num; } void Assc_array::printAll(){ for(int i=0;i <items;i++) cout <<table[i].name << ': ' <<table[i].tel_num << '\n '; }#include <iostream > using namespace std; //#include"assoc.cpp" void main() { Assc_array tel_num_table(5); tel_num_table["Zhang"]=7075461 ; tel_num_table["Li"]=4047658 ; tel_num_table["Tan"]=2595121 ; tel_num_table["Cai"]=7732435 ; cout <<"Zhang:" <<tel_num_table["Zhang"] << '\n '; cout <<"Tan:" <<tel_num_table["Tan"] << '\n '; cout <<"Cai:" <<tel_num_table["Cai"] << '\n '; tel_num_table.printAll(); }