C++类返回指针
C++ class return pointer
我相信这可能是重复的,因为我不知道我应该用什么确切的术语来搜索正确的东西。
我正在与Arduino合作,我已经为多个Arduino和Raspberries之间的通信编写了库。
class Machine {
public:
// other functions here
Mission & create_mission(int num);
private:
// other variables here
Mission _missions[10];
};
这是类实现:
Mission & Machine::create_mission(int num) {
Mission mission = Mission();
mission.setNumber(num);
_missions[_missions_count] = mission;
_missions_count += 1;
return _missions[_missions_count-1];
}
据我所知,这是
mission1 = machine.create_mission(1);
不指向类Machine中_missions数组中的相同任务。由于我没有使用c++的经验,问题是-我应该如何实现函数以返回_missions数组中的相同Mission?
完整的代码可以在这里下载(.zip):谜语.lv/code/code.zip
类似的东西?
_missions[_missions_count] = mission;
_missions_count += 1;
return _missions[_missions_count-1];
}
您还需要将功能签名更改为
Mission& Machine::create_mission(int num)
您可以通过引用返回:
声明:
Mission & create_mission(int num);
定义:
Mission& Machine::create_mission(int num) {
Mission mission = Mission();
mission.setNumber(num);
_missions[_missions_count] = mission;
_missions_count += 1;
return _missions[_missions_count - 1];
}
或通过指针:
声明:
Mission* create_mission(int num);
定义:
Mission* Machine::create_mission(int num) {
Mission mission = Mission();
mission.setNumber(num);
_missions[_missions_count] = mission;
_missions_count += 1;
return &_missions[_missions_count - 1];
}
如果您希望对象在那里,通常会通过引用返回,这里就是这种情况。
目前,您正在返回一个临时(mission
)的引用,这是不允许的。_missions[_missions_count] = mission;
将你的任务对象复制到地图上,该地图将比你想要的create_mission
范围更长。
您的代码创建一个新的任务对象,并将其分配给列表中的一个。然后将返回此临时对象。此外,create_mission()
方法被声明为返回Mission
对象的副本。
你可以通过使用这样的参考来规避这一点:
Mission &Machine::create_mission(int num) {
// create a reference to one of the Missions in the array
Mission &mission = _missions[_missions_count];
// work on that Mission
mission.setNumber(num);
_missions_count += 1
// return the reference;
return mission;
}
相关文章:
- 在 const 函数中通过引用和指针返回之间的区别
- 指向 std::unrodered_map 中元素的指针返回'Read access violation'
- 为什么要为指针返回类型返回一系列字符?
- Visual C 运行时:Malloc将指针返回到已经使用的内存(包含实际字符串)
- 将原始指针返回到智能指针
- 从函数中的指针返回对象,例如链接列表
- 将指针返回使用New创建的数组数组
- 查找并将指针返回向量中的对象
- 函数可以将指针返回其自己的类型
- 指针返回值的地址
- 为什么静态指针返回函数中有一个"静态"键?
- 从弱指针返回类型返回共享指针
- 如何将C++引用和指针返回转换为 C++/CLR
- 从指针返回对象时出现意外的析构函数调用
- 阵列指针返回垃圾
- (C )当在同一类中调用时,污点指针返回正确的值,而从MAIN调用时为0
- C 从指针返回到成员功能
- 在构造函数以外的任何其他位置访问相机时,我的相机指针返回 null
- 从取消引用的指针返回原始指针
- 指针返回