Я пишу плагин хоста.Когда плагин загружен, он получает указатель на таблицу функций.Иногда я хочу создать свободный интерфейс, например:
typedef struct{} *ht_MenuNode;
struct iMenuNode
{
struct iEditor
{
typedef iEditor *t_loopback;
t_loopback (*SetCaption) (const char *);
t_loopback (*AddChild) (ht_MenuNode Child);
// etc ...
ht_MenuNode (*GetHandle)();
};
iEditor * (*New) ();
iEditor * (*Edit) (ht_MenuNode);
// ...
};
Я хочу использовать ссылки на iEditor
вместо указателей, потому что
- Функции интерфейса никогда не будут возвращатьневерный указатель на
iEditor
. - По понятным причинам сохранение указателей на
iEditor
. - запрещено, поэтому нет необходимости поддерживать совместимость с C .
- Я бы хотел сохранить некоторые нажатия клавиш при наборе длинного кода.
Но,
- Различные плагины на одной платформе могут быть скомпилированы с разными компиляторами.
Я никогда не видел примеров функцийТаблицы со ссылками.
iEditor & (*New) ();
iEditor & (*Edit) (ht_MenuNode);
Итак, мой вопрос: передаются ли по ссылке и возвращаются ли по ссылочной портативной технике?