Скажем, у меня есть пространство имен KeyManager
и у меня есть функция press
Попутный относительные указатели на функции в качестве параметров
std::vector<std::function<void()>*> functions;
void KeyManager::addFunction(std::function<void()> *listener)
{
functions.push_back(listener);
}
void KeyManager::callFunctions()
{
for (int i = 0; i < functions.size(); ++i)
{
// Calling all functions in the vector:
(*functions[i])();
}
}
и у меня есть класс Car
и в конструкторе автомобиля, который я хочу передать это относительная функция указатель функция класса как так:
void Car::printModel()
{
fprintf(stdout, "%s", this->model.c_str());
}
Car::Car(std::string model)
{
this->model = model;
KeyManager::addFunction(this->printModel);
}
Я получаю следующее сообщение об ошибке при попытке передать относительный указатель функции:
error C3867: 'Car::printModel': function call missing argument list; use '&Car::printModel' to create a pointer to member
Как исправить это?
Можете ли вы предоставить код для «Автомобиль :: TestKey» Я не нашел его в должности. –
Извините, я скопировал и вставил ошибку из моего производственного кода и забыл переименовать ее для примера. –