为 std::vector<struct> 创建一个 getter 函数
Posted
技术标签:
【中文标题】为 std::vector<struct> 创建一个 getter 函数【英文标题】:Creating a getter function for an std::vector<struct> 【发布时间】:2014-12-08 22:54:53 【问题描述】:这是我第一次在这里提出问题,如果格式有点不对,我深表歉意。此外,我几年来第一次回到编程领域,所以我很生疏,我对如何为我的结构向量创建 getter 函数感到困惑。
assetLoader.h:
public:
assetLoader();
virtual ~assetLoader();
std::vector<assetLoader:playerStruct> getTypesOfPlayer() return typesOfPlayer;
private:
//Create a struct to hold the Player data
struct playerStruct
;
playerStruct newPlayer;
std::vector <playerStruct> typesOfPlayer;
每当我尝试编译解决方案时,都会收到以下错误:
错误:模板参数 1 无效
错误:模板参数 2 无效
我已经尝试了几种不同的尝试来自己修复它,但我没有设法得到任何帮助,因此将不胜感激:)
【问题讨论】:
assetLoader:playerStruct
应该是assetLoader::playerStruct
您将返回向量的副本。我不知道你想对数据做什么,但你可能想考虑返回一个引用:const std::vector<assetLoader::playerStruct>&
感谢您的回复。我已经修改了函数,但现在得到:嵌套名称说明符中使用的不完整类型“assetLoader”?
指针和引用可以使用前向声明。其他用途需要定义
【参考方案1】:
您需要转发声明您的 playerStruct 或之前定义它。
这是你将如何转发声明:
class assetLoader
struct playerStruct;
public:
assetLoader();
virtual ~assetLoader();
std::vector<assetLoader::playerStruct> getTypesOfPlayer()
return typesOfPlayer;
private:
//Create a struct to hold the Player data
struct playerStruct
;
playerStruct newPlayer;
std::vector <playerStruct> typesOfPlayer;
;
【讨论】:
对不起,我没有尽快回复,直到现在才能尝试。工作出色。非常感谢以上是关于为 std::vector<struct> 创建一个 getter 函数的主要内容,如果未能解决你的问题,请参考以下文章
std::vector push_back报错Access violation
如何使用可变长度类型将包含多个 std::vector<float> 的结构写出到 HDF5?
具有可访问构造函数的 std::vector< T >::iterator