2016-11-18 2 views
0

Я хочу сделать класс в моем Rhapsody модели noncopyable, ноКак модель noncopyable в Rational Rhapsody 8.0.1

  • не имеет библиотеки повысить доступную (от которого я просто вывожу)
  • и я не могу использовать способ отключения по умолчанию генерируется CTOR копирования C++ 11 и скопировать задание оп (потому что я должен был бы манипулировать сигнатуру, которая AFAIK не является непосредственно возможным)

=> поэтому я делаю это старомодным способом.

Что мне нужно от Rhapsody:

В этом контексте я хочу, чтобы генерировать только декларацию для копирования CTOR и копия назначения оп - Я не нуждаюсь в реализации. Возможно ли это?

Вещи, которые я считал:

  • Я не нашел никакой полезной собственности еще.
  • Сопоставление только спецификации функции-члена с файловым объектом не помешает Rhapsody генерировать пустое тело функции в неявно созданный файл-объект (который мне не нужен и не нужен).
+0

Я на самом деле нашел способ только генерации кода спецификации (который был то, что я хотел :-)): недвижимости * CG :: Работа :: Сформировать * должен быть установлен в положение «_Specification_». По умолчанию он будет установлен на «_Full_» –

ответ

2

Я хотел бы предложить стереотипа подход:

  1. Создать NonCopyable базовый класс а, как, например, описывается @Dennis.
  2. Создайте стереотип, вы можете, например, назовите его <<non-copyable>>.

    a) Установить свойство стереотипа CPP_CG::Class::AdditionalBaseClasses на NonCopyable (имя созданного выше базового класса).

    b) Сделать стереотип применимым к классам.

  3. Наконец, добавьте стереотип <<non-copyable>> ко всем классам, которые не подлежат копированию.

+0

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

+0

это в основном работает: _but_, когда вы используете nonCopyable-stereotype, отношения наследования принудительно закрыты, потому что не указан тип наследования (открытый, закрытый, защищенный) –

0

Написать личное копию CTOR и opertor:

class NonCopy { 
    // These private versions of the copy constructor 
    // and operator will signal to the compiler to 
    // prevent automatic generation. 
    NonCopy(const NonCopy& other); 
    const NonCopy& operator=(const NonCopy& other); 
public: 
    // Your public ctors 
    NonCopy(int a); 
} 

Вы можете посмотреть на boost version of the non-copyable interface для более полного примера.

+1

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - [Обзор] (/ review/low-quality-posts/14329808) – Garf365

+1

Хотя это может быть ценным советом для решения проблемы, хороший ответ также демонстрирует решение. Пожалуйста, [править], чтобы предоставить пример кода, чтобы показать, что вы имеете в виду. В качестве альтернативы подумайте о том, чтобы вместо этого писать это как комментарий. –

+0

@ Garf365 - Я редактировал для большего контекста, как предложил Тоби, но вы предполагаете, что я не отвечаю на вопрос. Из моего чтения он хочет класс, который не копируется. Может, я что-то упустил? – Dennis

Смежные вопросы