我正在尝试构建一个非常简单的地址簿.我创建了一个Contact类,地址簿是一个简单的列表.我正在尝试构建一个允许用户将联系人添加到地址簿的功能.如果我把我的代码带到函数之外,它就可以了.但是,如果我把它放入,它就不起作用了.我认为这是一个通过参考传递与传递价值问题,我没有按照自己的意愿对待.这是函数的代码:
void add_contact(list<Contact> address_book)
{
//the local variables to be used to create a new Contact
string first_name, last_name, tel;
cout << "Enter the first name of your contact and press enter: ";
cin >> first_name;
cout << "Enter the last name of your contact and press enter: ";
cin >> last_name;
cout << "Enter the telephone number of your contact and press enter: ";
cin >> tel;
address_book.push_back(Contact(first_name, last_name, tel));
}
Run Code Online (Sandbox Code Playgroud)
我没有遇到任何错误,但是当我尝试显示所有联系人时,我只能看到原始联系人.
作为我的C++模块的一项任务,我必须构建一个文本冒险游戏.我面临的问题是一个概念问题; 每个人都说我应该使用树数据结构来表示我的游戏.我没有得到的是为什么.
假设我有4个房间的房子.我们可以把它想象成一个2x2阵列.在每个房间里我都有两个物体.我希望以这样一种方式显示这些数据:我可以轻松地将我的角色从0x0移动到0x1(直接 - 一步,或间接 - 三步),同时携带一个对象.
为什么使用树来保存所有数据以及我的角色将如何从一个节点移动到另一个节点更好?或者角色也是节点?我的角色不应该是列表作为其库存的对象吗?
我对此有点困惑.我不是在寻找任何代码,只是更好地理解数据表示和操作.
建议是地图.但是我不明白我的角色将如何"导航"地图.
我有一个图像库,我想在基于宝丽来卡的系统中显示它们,跨越多行和多列.我面临的问题与图像的布局有关.当图像同时是纵向和横向时,横向图像的mat-card属性会变得臃肿,以匹配纵向的尺寸.如何使用自然填充系统,垫卡可以适应图像的宽高比?
HTML:
<div fxLayout="row">
<div layout="column">
<div fxFlex="100" fxFlexOffset="1" fxLayoutWrap fxLayoutGap="2rem" class="mat-elevation-z0" *ngIf="postcards != null">
<mat-card *ngFor="let postcard of postcards let index = index" >
<img mat-card-image src="{{postcard.img}}" alt="{{postcard.postcard_id}}" class="postcards" (click)="display_postcard(index)">
</mat-card>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.postcards {
max-width: 320px;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试创建一个函数来按名称或姓氏对地址簿中的联系人列表进行排序.
void sortList (list<Contact> & address_book){
//define two iterators - first to point to the first element from the list, second to the second element
list<Contact>::iterator it = address_book.begin();
list<Contact>::iterator it2 = address_book.begin();
it2++;
//get the last name for the first 2 contacts
string last_name1 = it->get_last_name();
string last_name2 = it2->get_last_name();
int i = 0;
while (i < last_name1.length() && i < last_name2.length()){
if (last_name1[i] < last_name2[i]){
swap(it, it2);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我确定我没有正确地做到这一点,但我对这些迭代器有点失落.我也知道我应该有另一个while循环遍历所有联系人,直到所有联系人都被排序,但老实说我不知道如何实现它.
我对这些C++指针有点困惑,我想知道是否可以在构造函数中创建指向类的实例的指针(以下几行).
class Room{
public:
Room();
~Room();
private:
Room* ptrToSelf;
};
Room::Room(){
ptrToSelf = &(what should I write in here to have the pointer point to it)
}
Run Code Online (Sandbox Code Playgroud)
我知道这可能听起来很疯狂(这里是新手),但我只是想知道它是否可行.有人可以向我解释一下.
非常感谢
编辑:
谢谢大家快速回答我的问题.我问,因为我想使用公共Room*::getPointer();方法返回类的指针.我有一个从一个房间移动到另一个房间的角色,我正在使用指针来实现这个目标.我以字符串的形式从用户那里获得输入,我无法将该字符串传递给character.moveTo(const Room*)我创建的方法的函数.我需要一种方法将字符串"转换"为类的指针,以便我可以将指针传递给方法.
编辑:
我正在考虑实现一个方法,该方法将根据字符串类型参数返回对象的指针:
Room::Room* getPointer(const string &nameOfRoom){
//I can't use this return statement as the following error
//Error: 'this' may only be used inside a nonstatic member function
return this;
Run Code Online (Sandbox Code Playgroud)
编辑(希望最后一个):
这是否正在回归我正在寻找的东西?
Room::Room* getPointer(const string &nameOfRoom){
return &Room();
}
Run Code Online (Sandbox Code Playgroud)
或者它正在返回新房间的地址?
谢谢