2013-07-08 4 views
-2

Я очень новый парень в визуальной студии, а также IDL. У меня есть .idl-файл, а visual studio генерирует файлы .h и .cpp из idl-файла.как удалить «const» для атрибута «in», когда код CPP генерируется из файла IDL в visual studio?

В сгенерированном коде в файле IDL добавляется «const» для атрибута «in». Я хочу избавиться от этой «const» ... пожалуйста, помогите мне.

сгенерированный файл заголовка имеет следующие функции:

virtual CosTransactions::Coordinator_ptr recreate(
        const CosTransactions::PropagationContext& ctx, 
        CosTransactions::otid_t_out tid) = 0; 

virtual CosTransactions::Coordinator_ptr tmf_start(
        const CosTransactions::otid_t& tid) = 0; 

Я хотел бы знать, как избежать «Уст» в списке параметров воссоздавать() и tmf_start()

+2

Вы понимаете, почему это происходит? Вы понимаете, как разорвать контракт, если его удалите? Зачем вам его удалять? Почему бы вам не обойти это «ограничение» вместо этого? –

+0

Фактическая проблема заключается в том, что я переношу свой код из старого компилятора C++ в новый компилятор. Я вижу, что я не могу использовать stl :: map в новом компиляторе. Тип ключа не может быть const в stl :: map в новом компиляторе. При выполнении этого изменения мне пришлось также изменить многие связанные функции. Наконец, я достиг точки, в которой код генерируется из файла IDL .... – whitetiger

+0

На первый взгляд, похоже, что вы должны спрашивать подробности о том, как использовать 'std :: map'. Наличие параметра 'const & 'здесь звучит как правильно. –

ответ

1

Поскольку параметр сам по себе [in] никаких изменений параметра не будет принято. Вот почему const имеет смысл на первом месте. Вы не объяснили, почему вообще вы хотели бы снять конспирацию. Если спецификатор является препятствием для вас (например, внутренний метод принимает неконстантную & в качестве аргумента), есть два простые и простые способы работы вокруг:

  1. const_cast раздеться/переопределить в константном спецификатор
  2. локальная копия содержимого контекста для дальнейших манипуляций
+0

, если я изменю константу этого параметра в производных классах, этот метод реализации будет отделен от полиморфной иерархии! – whitetiger