【发布时间】:2016-10-05 09:38:05
【问题描述】:
我目前正在为 C++ 编程开发一个面向对象的项目。 我创建了一些对象:
int main()
{
Address address1 = Address("7732","cambie street","vancouver","BC","v5p3r3");
Author author1 = Author("Joe","Howe","joehow@hotmail.ca");
Publisher publisher1("candy",address1);
Book book1 = Book("sprite",author1,publisher1,"1995");
return 0;
}
这是我的 4 个对象构造函数
Address::Address(string number, string name, string c, string crty, string pCode){
streetNumber = number;
streetName = name;
city = c;
country = crty;
postalCode = pCode;
}
Book::Book(string newTitle, Author author1,Publisher pub, string y){
ISBN++;
bookISBN = ISBN;
title = newTitle;
a = author1;
authorCount = 1;
d = pub;
year = y;
}
Author::Author(string fN, string lN, string e){
firstName = fN;
lastName = lN;
email = e;
}
Publisher::Publisher(string n, Address x){
name = n;
a = x;
}
当我在 main 中调用这些函数时
cout << book1.getPublisher().getAddress().getCity() << endl;
book1.getPublisher().getAddress().set("washington",Address::CITY);
cout << book1.getPublisher().getAddress().getCity() << endl;
不确定c++中是否允许这些我已经在java中完成了,
我也试过将它们分开,它会给我想要的结果,
所以我的问题是 c++ 中是否允许这种格式,如果是,我做错了什么。
我的结果显示
vancouver
vancouver
但我想要的结果是
vancouver
washington
这些是我的 get/set 函数
Address Publisher::getAddress(){
return a;
}
Publisher Book::getPublisher(){
return d;
}
void Address::set(string value , int number){
switch(number)
{
case STREET_NUMBER:
streetNumber = value;break;
case STREET_NAME:
streetName = value;break;
case CITY:
city = value;break;
case COUNTRY:
country = value;break;
case POSTAL_CODE:
postalCode = value;break;
}
}
感谢您的帮助
【问题讨论】:
-
请买一本关于 C++ 的书。您的问题是您正在使用从 C++ 中的 Java 学到的东西。由于这两种语言具有完全不同的对象模型,因此您的代码会失败。 Nikita 解释了其中的一些内容(复制返回值),但还有更多内容,因此建议阅读一本好书。
-
同意@UlrichEckhardt;您应该阅读指针和引用并了解它们是什么以及如何使用它们......因为这更接近于其他语言的工作方式。
标签: c++