2015-09-06 159 views
0

我有电话簿上的程序。与第一类类创建对象初始化技巧

class entry 
{ 
    string name; 
    int number; 
    ... 
} 

与对象

class phoneBook 
{ 
    Entry objs[100];//maximum 100 users 
    //getter and setter below 
    ... 
} 

的第二类处理阵列I有main()函数来控制它们。

int main(){ 
    phoneBook p; 
    p.count(count); 
    p.add(count,name,number); 
    p.print(); 
    ... 
} 

我的问题是与线:

phoneBook p; 

每次我把这个线,就会在phoneBook类初始化objs[100]。假设我正在输入objs [2],那么我的objs [1]将是空的。请问如何修理我的结构?

+3

我经常说:'int'是**不是电话号码的正确类型。电话号码是*字符串*的数字,而不是整数。例如,在世界的许多地方,大多数电话号码以0开头。 –

+2

除此之外,您的问题太广泛。阅读您用来学习C++的书籍或网站中的后续章节,他们会指引您使用正确的数据结构。我们在这里不能解释,因为你的问题表明我们必须写这本书来向你解释这个,对不起。 –

+0

我不完全确定你在问什么,但是每次你打电话给电话簿时,你正在创建一个新的_empty_电话簿。每次添加条目时是否创建新的电话簿? –

回答

2

如果需要,您的phoneBook类应只分配空间。由于您不知道条目的内容,因此在初始化时,设置条目值是没有意义的。

我强烈建议您使用比阵列更动态的结构,如std::vector,std::liststd::map

您的phoneBook类需要*追加或插入或读取新条目的方法。这将允许您用合理的数据填写分配的空间。

如果您为条目使用数组,则仅为条目分配空间。方法append最初将在objs[0]处放置一个新条目。下一个入口在objs[1]等等。

此外,搜索StackOverflow或网络的“C + +电话簿的例子”,这应该产生一堆的例子,让你思考。请记住,在发布之前先搜索。或者在发布之前先进行调试。

+0

非常感谢thomas – guangde