通过函数参数从向量获取类指针
Get class pointer from a vector via function argument
我有一个类
class MyClass {
public:
string name;
};
我有一个类管理器,其中包含所述类的向量。
class MyManager {
public:
vector<MyClass> classes;
};
我想通过循环和匹配名称从向量中提取一个类
int MyManager::FindMyClass(string name, MyClass *clazz){
vector<MyClass>::iterator it;
for(it = classes.begin(); it != classes.end(); ++it){
if(it->name == name){
// if i cout here, i see the cout, so i did find it..
*clazz = *it;
return 1;
}
}
return 0;
}
int main() {
MyClass *myClass;
int result = myManager.FindMyClass("bob", *myClass);
}
我知道该对象匹配正确(请参阅评论)。我已经尝试了指针,双指针,引用的所有组合,并获得了从未知转换为无效指针的每个错误。我只是不确定我必须做什么才能获得对存储在向量中的类的引用。
将参数类型更改为 MyClass*&
,以便可以返回指向在vector
中找到的对象的指针。
int MyManager::FindMyClass(string name, MyClass* &foundPointer)
MyClass *myClass;
int result = myManager.FindMyClass("bob", myClass);
找到匹配项后,可以使用以下命令获取指向对象的指针
foundPointer = &(*it);
我还建议将返回类型更改为 bool
.
以下是该函数的更新版本:
bool MyManager::FindMyClass(string name, MyClass* &foundPointer)
{
vector<MyClass>::iterator it = classes.begin();
for(; it != classes.end(); ++it)
{
if(it->name == name)
{
foundPointer = &(*it);
return true;
}
}
return false;
}
建议的第二个改进:
将返回类型更改为 MyClass*
。返回指向找到的对象或nullptr
的指针(如果未找到)。
MyClass* MyManager::FindMyClass(string name)
{
...
}
建议的第三个改进:
使用标准库函数 std::find_if
和 lambda 表达式来简化函数。
auto it = std::find_if(classes.begin(),
classes.end(),
[&](const MyClass &c) { return (c.name == name); });
更新的功能:
MyClass* MyManager::FindMyClass(string name)
{
auto it = std::find_if(classes.begin(),
classes.end(),
[&](const MyClass &c) { return (c.name == name); });
if ( it != classes.end() )
{
return &(*it);
}
return nullptr;
}
相关文章:
- 使用 GTK3 C++获取指针坐标
- 获取指针的地址会为其分配一个值
- 如何获取指针数组中的元素数量?
- 从 numpy 数组获取指针以将图像发送到C++
- 如何根据指针地址获取指针内容
- 指针数组.获取指针元素的值
- 如何在没有作弊引擎的情况下从其他应用程序获取指针地址?
- 如果地址已知,如何获取指针变量的名称
- 动态创建函数并获取指针
- 从矢量的元素获取指针
- 获取指针和常规整数的奇怪值
- 从没有强制转换的整数中获取指针。知道什么,但不知道如何
- 如何在 c/c++ 中获取指针的地址?
- 在头文件中的函数原型中获取指针数组:函数声明为 void
- 如何从“boost::function”中获取 C 指针(如 'var (*)(vo
- 获取"指针 1"到"指针 3"的值
- C :功能获取指针或引用
- 如何从指针中获取指针指向的值的地址
- 如何使用scanf获取指针大小的整数
- 获取指针的地址并将其转换为wxString