У меня есть класс, который должен обрабатывать данные из разных файлов. Я думал о создании одной функции, которая будет читать указанный файл, а затем также принимать обратный вызов, чтобы он мог использовать это для обработки строки. Ниже приведен пример класса для представления того, что я пытаюсь сделать:
#include <iostream>
#include <vector>
#include <string>
class Example
{
std::vector<std::string> m_exampleFileData {
"test1",
"test2",
"test3"
};
public:
void doSomethingMain(const std::string& path)
{
processFile(path, doSomething);
}
private:
void processFile(const std::string& filePath, void (Example::*fpProcessLine)(const std::string&) )
{
for (const auto& line : m_exampleFileData) {
this->*fpProcessLine(line);
}
}
void doSomething(const std::string& line)
{
std::cout << "Hello: " << line << '\n';
}
};
int main(int argc, char** argv) {
const std::string filePath{"path"};
Example ex;
ex.doSomethingMain(filePath);
}
Проводник компилятора: https://godbolt.org/z/LKoXSZ
Основная проблема заключается в том, что независимо от того, что я Не могу ли я, кажется, быть в состоянии передать функцию правильно processFile
. Есть ли способ сделать это в C ++? Как я go об этом?