c++ - 将对象数组传递给函数
问题描述
我有一个类将 object.name 定义为“Ben”,object.favNum 定义为 25。
我还有一个数组(名称)来存储此类的 5 个对象。
在输出数组中对象的属性之前,我使用指针表示法将 names[0].name 的值更改为“Jim”,将 names[0].favNum 的值更改为 40。
这是我的代码:
#include<iostream>
class Person {
public:
std::string name = "Ben";
int favNum = 25;
};
int main()
{
Person names[5];
Person *ptr = &names[0];
// Changing Values
(ptr + 0)->name = "Jim";
(ptr + 0)->favNum = 40;
for (int i = 0; i < 5; i++)
{
std::cout << (std::string) (ptr + i)->name << std::endl;
std::cout << (int) (ptr + i)->favNum << std::endl << std::endl;
}
system("pause>0");
}
输出:
Jim
40
Ben
25
Ben
25
Ben
25
Ben
25
在我有“更改值”注释的地方,我想用一个函数替换这两行。该函数将能够像我对 2 行所做的那样更改值。这是我遇到问题的地方。
我正在努力弄清楚将函数声明为什么类型、如何传递指针、如何接收指针以及如何更改函数中数组中对象的值。
解决方案
这就是您的代码在“真实” c++ 中的外观(值的设置将在构造函数或使用setNameAndFavNum()
函数中完成):
#include <array>
#include <iostream>
struct Person {
public:
Person(const std::string& name_ = "Ben", int favNum_ = 25) : name(name_), favNum(favNum_) {};
void setNameAndFavNum(const std::string& name_, int favNum_) {
name = name_;
favNum = favNum_;
};
std::string name;
int favNum;
};
int main() {
std::array<Person, 5> names;
// Changing Values
names[0].setNameAndFavNum("Jim", 40);
// Alternatively you can use the constructor and implicit copy constructor
// names[0] = {"Jim", 40};
for (int i = 0; i < names.size(); i++) {
std::cout << names[i].name << std::endl;
std::cout << names[i].favNum << std::endl << std::endl;
}
}
在编写 C++ 代码时,您不应该乱用指针和原始值。
推荐阅读
- python-xarray - 在 xarray 中使用非索引坐标加入
- asp.net - 在 REST 中应用 PATCH 之前验证值
- javascript - 对 @babel/preset-env 的 useBuiltIns 选项感到困惑(使用 Browserslist 集成)
- highcharts - HighChart Tooltip 不同的后缀值
- javascript - 在Javascript中以下两次访问Hashmap有什么区别
- azure - 使用 Azure AD 的 SSO
- ios - 在swift 4中添加uiview后按钮不起作用
- node.js - ms botframework nodejs sdk 版本 3 中带有按钮的表情符号或图像
- apache-kafka - 如何从 Kafka 主题中获取最近的消息
- android - ionic 3 地理位置第二次无法正常工作