ZhenyaMak
@ZhenyaMak
Писать качественный софт? Пфф, это не для меня.

Как исправить ошибку?

member initializer 'event' does not name a non-static data member or base class
#pragma once
#ifndef  __MENU_ITEM__
#define __MENU_ITEM__
#include <iostream>
#include <string>
#include <functional>

class menu_item
{
public: 
	menu_item(std::string name, std::function<void()> func) : _name(name), event(func)
	{
		
	}
	
	void event();
	
	std::string const& name = _name;
	
private: 
	std::string _name;
};

#endif
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
event - это функция, а не поле, поэтому event(func) - невалидная конструкция для списка инициализации (тебе компилятор об этом и говорит)
Если хочешь, чтобы вызываемая функция инициализировалась в конструкторе, то храни само поле функции и внутри event() ее вызывай. Примерно так:
class menu_item
{
public: 
	menu_item(std::string name, std::function<void()> func) : _name(name), _func(func)
	{
		
	}
	
	void event()
        {
              _func();
        }
	
	std::string const& name = _name;
	
private: 
	std::string _name;
        std::function<void()> _func
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы