请帮助,我设计了一个通讯录作为一个项目,我有编译代码正确和我得到错误。与Address类相关的问题..你可以随意复制并运行代码,看看我在说什么。提前感谢
#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;
class Address
{
private:
string home;
string street;
string apt;
string city;
string state;
string zip;
public:
Address();
string getHome() const;
string getStreet() const;
string getApt() const;
string getCity() const;
string getState() const;
string getZip() const;
void output() const;
void input();
};
class contact{
private:
string fn;
string ln;
Address address;
string email;
string number;
public:
void input();
void output();
void setname(string f_n, string l_n);
void setaddress(Address home);
void setemail(string emaila);
void setnumber(string num);
string getname();
string getAddress();
string getemail();
string getnumber();
contact();
contact(string f_n, string l_n, Address home,string emaila,string num);
};
void menu(string opt);
int main(){
string opt="";
contact c;
c.input();
menu(opt);
c.output();
cout<<"input up to 10 contacts, type quit to stop if less than 10: "<<endl;
return 0;
}
void menu(string opt){
cout<<"Choose(type) a Menu: search | display all(show) | exit'"<<endl;
cin>>opt;
if(opt=="search")cout<<"write a function that index"<<endl;
else if(opt=="show")cout<<"write a function that display all: "<<endl;
else if(opt=="exit")exit(0);
}
contact::contact(){
fn=""; ln=""; Address address; email=""; number="";
}
contact::contact(string f_n, string l_n, Address address,string emaila,string num){
fn= f_n; ln= l_n; address ="" ;email= emaila;number= num;
}
void contact::input(){
for (int i=1; i<=10;i++){//allow 10 contacts
cout<<"fn and ln separate by a space: ";
cin>>fn>>ln;
cout<<"address: ";
Address.input();
cout<<"email: ";
cin>>email;
cout<<"phone number: ";
cin>>number;
}
}
void contact::output(){
cout<<"name: "<<fn<<" "<<ln<<" address "<<Address.output();<<" email: "<<email<<" digits "<<number<<endl;
}
void contact::setname(string f_n, string l_n){
fn= f_n; ln= l_n;
}
void contact::setemail(string emaila){
email= emaila;
}
void contact::setnumber(string num){
number= num;
}
string contact::getAddress(){
return Address address;
}
string contact::getname(){
return fn, ln;
}
string contact::getemail(){
return email;
}
string contact::getnumber(){
return number;
}发布于 2011-10-26 12:00:54
通过查看您的代码,错误似乎出现在以下位置(我没有编译您的代码)
contact::contact(string f_n, string l_n, Address address,string emaila,string num){
fn= f_n; ln= l_n; address ="" ;email= emaila;number= num;
}当你这样做的时候
address ="";您尚未重载=运算符以将地址设置为空字符串。无效。
必须重载"=“运算符,才能将Address类的每个成员设置为空字符串。
尝试如下所示:
Address operator=(string str)
{
this.home = str;
this.street = str;
this.apt = str;
this.city = str;
this.state = str;
this.zip = str;
}在输入()函数中: Address.input();
除非将函数设为静态,否则不能使用类直接调用函数。您应该使用:
address.input();
类似的。而不是
Address.output();使用
address.output();这里肯定有另一个错误:
return Address address;您不会像这样返回指针。想象一下,你将如何返回一个字符指针。例如,如果您有:
char *a;然后假设在一个函数中:
(char*) test()
{
return a; //notice not "return char a"
}同样,在您的代码中,您应该返回对象,而不是类类型。即
return address; //not return Address addresshttps://stackoverflow.com/questions/7898524
复制相似问题