Инициализировать Inner Class с внешним классом это возможно?

Сегодня я попытался создать экземпляр внутреннего класса, передав ему внешний класс и находясь в пространстве имен внешнего класса:
Я использую Visual Studo 2013.
Код выглядит так: (смотрите ^^)

class Base
{
public:
virtual void foo(){ cout << "foo" };
};

class object
{
class Derived : public Base
{
object& o;
public:
Derived(object& o) : o(o){}
virtual void foo(){ cout << "bar" };
}derived(*this);
//          ^^^^^^
};

Производный класс, унаследовавший что-то, не влияет ни на что в этом примере. (только здесь по контекстным причинам, см. ниже)

На этом ^^ укажу на ошибку:
нет подходящего конструктора по умолчанию

Intellisense предупреждает меня, что ожидает спецификации типа.
Я также попытался передать указатель (конечно, я тоже изменил конструкторы), но та же реакция.
Для протоколла я попробовал довольно много вариантов и исследований к настоящему времени, но я не могу выделить четкий ответ на мою проблему.

Указатель «this» здесь нельзя использовать? Как я могу передать себя тогда на этом этапе?

Для фона (только если вы заинтересованы):

Я пытался написать код для связывания клавиш в приложении. Пройти
Функции для ключей я использую «Интерфейс» класса KeyFunction (Base
класс напоминает это).

Теперь я хочу дать классам (объектам) возможность объявить
собственная функция KeyFunction (производная) и, что более важно, передача ресурсов (объект)
с этим, таким образом, что функции могут работать на них (так как я могу только
использовать пустые указатели, потому что они позже сохраняются в массиве для
привязки) я уже выполнил эту задачу с другим кодом, который я думаю
это долго размещать здесь, хотя. Экспериментируя я наткнулся на
Эта проблема.

-1

Решение

Ваша ошибка компиляции не имеет ничего общего с вашей иерархией классов, но с тем простым фактом, что вы не строите экземпляр класса.

Попробуйте на самом деле объявить члена класса и конструктор класса:

class Base
{
public:
virtual void foo(){ }
};

class object
{
class Derived : public Base
{
object& o;
public:
Derived(object& o) : o(o){}
virtual void foo(){ }
};

Derived derived;

object() : derived(*this)
{
}
};
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]