我想從h5檔案中獲得所有組的名稱。我能夠使用一個收集名稱的全域變數來做到這一點。我的問題是如何在沒有全域變數的情況下做到這一點?我不想有任何全域變數,但我有一個向量,需要包含所有組的名稱。
//this is the global variable I am trying to avoid.
std::vector<std::string> myVec;
herr_t op_func(hid_t loc_id, const char* name, const H5O_info_t* info, void opdata)
{
if(info->type == H5O_TYPE_GROUP)
{
myVec.push_back(std::string(name))。
}
//here is my function and i pass a vector that i want the names to be in via reference.
void getGroupNames(hid_t fileId, std::vector<std:string> & someVec)
{
herr_t status。
status = H5Ovisit(fileId, H5_INDEX_NAME, H5_ITER_NATIVE, op_func, NULL)。
someVec = myVec。
}
uj5u.com熱心網友回復:
一種方法是將someVec傳遞給H5Ovisit的最后一個引數,即:
status = H5Ovisit(fileId, H5_INDEX_NAME, H5_ITER_NATIVE, op_func, static_cast< void*>(&someVec)。
然后在op_func中直接推到它:
auto vec = static_cast<std::vector<std::string> *> (opdata);
vec->push_back(std::string(name))。
(注意,op_func的最后一個引數應該是void*)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/321871.html
標籤:
