Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Shadows_in_Rain
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 7
#1

Ссылки VS портабельность. - C++

04.03.2012, 18:00. Просмотров 269. Ответов 0
Метки нет (Все метки)

Предыстория
под катом.
Я пишу хост для плагинов. Когда плагин загружен, он получает указатель на таблицу функций. Иногда мне нужно построить "текучий интерфейс", типа такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);
    // ...
};
По привычке я использую указатели, но в этом случае мне хотелось бы использовать ссылки, ибо
1. Функции этого интерфейса никогда не вернут невалидный указатель на iEditor.
2. По очевидным причинам сохранять указатель на iEditor недопустимо.
3. Нет необходимости поддерживать совместимость с Си.
4. Я не прочь сэкономить немного времени при наборе длинных текстов.

C++
1
2
iEditor & (*New)  ();
iEditor & (*Edit) (ht_MenuNode);
Но:
1. Под одной и той же платформой плагины могут быть скомпилированы разными компиляторами.
2. Я не видел аналогичных интерфейсов, где бы использовались ссылки.
Поэтому меня мучают сомнения.


Собственно вопрос.
Передача-по-ссылке и возврат-по-ссылке — это портабельные приёмы?
Прописано ли это как-либо в стандарте?

До этого я задавал вопрос на стакЪоверфлов, но ответов вообще не получил, только смутные комментарии.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2012, 18:00     Ссылки VS портабельность.
Посмотрите здесь:

Зачем нужны rvalue ссылки, если есть универсальные ссылки - C++
Читаю книгу Скотта Мэйерса... Что-то я совсем запутался с этими rvalue ссылками. Я не пойму, зачем нужны rvalue ссылки, если есть...

Ссылки - C++
Хотел бы узнать как функция Struk & Function() возвращает значения например что бы код весь не писать скажу что объявлен класс struk...

Ссылки - C++
Hi all Нельзя возвращать ссылку, если возвращаемое значение является локальной переменоой как здесь, потому что локальные переменные...

Ссылки - C++
Здравствуйте. Если я задаю матрицу int **m=new int*; for (int i=0;i<h;i++) m=new int; то могу ли я обращаться и...

ссылки - C++
как здесь привести к интовому виду,чтобы выдавало 100? # include <iostream> using namespace std; void f(int &i) { i = 100;...

ссылки - C++
скиньте плиз несколько интерестных ссылок типа таких: http://www.firststeps.ru/mfc/winapi/winapi1.html уроки, примеры Добавлено...

Ссылки в С++ - C++
void swap(int& i, int& j) { int tmp = i; i = j; j = tmp; } int main() { int x, y;

Ссылки - C++
Для меня вроде понятно что означает конструкция int* a; создается указатель на целую переменную. А что означает конструкция int&...

Классы и ссылки - C++
Почему такой код прокатывает

Указатели и ссылки c++ - C++
Здравствуйте! Не могли бы вы объяснить как можно использовать ссылки и указатели c++ на практике? Я не пойму для чего они нужны!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru