Я использую метод списка инициализатора для моего конструктора класса.Я инициализирую свои переменные, вызывая функцию-член getData класса dataRegistry, которая предоставляет данные для загрузки в переменные моего класса.Метод getData обычно вызывается путем передачи массива символов, который содержит имя данных для загрузки.
Например, список инициализаторов выглядит следующим образом:
dataItem1(dr.getData("Pop.Stats1")),
dataItem2(dr.getData("Pop.Stats2"))
Однако из-зав соответствии с именами предоставленных мне нужно извлечь имя набора данных из пользовательского класса, а затем добавить имя переменной для передачи в метод getData.Примерно так:
datasetName(user.getAttributeString("DataSetName")),
dataItem1(dr.getData(datasetName + ".Stats1")),
dataItem2(dr.getData(datasetName + ".Stats2"))
, где datasetName определено как переменная std :: string.
Однако это приводит к следующей ошибке:
no matching function for call to 'DataRegistry::GetData(std::basic_string<char,std::char_traits<char>, std::allocator<char> >)'
Так какРеализация метода getData мне не предоставлена, и я знаю, что он работает, когда я просто передаю массив функций (например, «Pop.Stat1») в функцию, я подозревал, что это произошло потому, что функция принимала только символьные массивы.Итак, я попытался:
datasetName(user.getAttributeString("DataSetName")),
dataItem1(dr.getData(strcat(datasetName.c_str() , ".Stats1"))),
dataItem2(dr.getData(strcat(datasetName.c_str() , ".Stats2"))),
но это выдает ошибку:
error: invalid conversion from 'const char*' to 'char*'
initializing argument 1 of 'char* strcat(char*, const char*)'
Я не знаю, что происходит не так?Пожалуйста, сообщите!