如何在Rational Rhapsody 8.0.1中对noncopyable进行建模

时间:2016-11-18 09:14:00

标签: c++ rhapsody

我想在我的Rhapsody模型中创建一个不可复制的类,但是

  • 没有可用的增强库(我将从中推导出来)
  • 我也不能使用C ++ 11的方式来禁用默认生成的拷贝ctor和拷贝赋值op(因为我需要操作函数签名,而AFAIK不是直接可能的)

=>所以我正在以旧的方式做这件事。

Rhapsody需要什么:

在这种情况下,我想只为复制ctor和复制赋值生成一个声明 - 我不需要实现。 这甚至可能吗?

我考虑过的事情:

  • 我还没有找到任何有用的财产。
  • 仅将成员函数的规范映射到文件对象不会阻止Rhapsody将空函数体生成为隐式创建的文件对象(我不需要也不想要)。

2 个答案:

答案 0 :(得分:2)

我建议采用刻板印象的方法:

  1. 创建一个<ul class="balloons"> <li class="image1" id="b_1">1</li> <!--it can be any class but i do not want it to add at beginning --> <li class="image4" id="b_2">2</li> <li class="image5" id="b_3">3</li> <li class="image3" id="b_4">4</li> <li id="b_5">5</li> <li id="b_6">6</li> <li class="image2" id="b_7">7</li> <li id="b_8">8</li> <!--any possibilities to add after this ? --> <li id="b_9">9</li> <li id="b_10">10</li> <li id="b_11">11</li> <li id="b_12">12</li> <li id="b_13">13</li> <li id="b_14">14</li> </ul> <script> $(document).ready(function(){ var size_baloon = $(".balloons li").size(); var images = ["","image1", "image2","image3","image4","image5"]; for (i = 1; i <= 5; i++){ var randomebloon = Math.floor((Math.random() * size_baloon)); //var randomebloon=randomebloon+1; var listofbloon = $('#b_' + randomebloon); //listofbloon.addClass('pwb'); listofbloon.addClass(images[i]); } }); </script> 基类,例如,由@Dennis描述。
  2. 创建一个刻板印象,例如,您可以将其命名为NonCopyable

    a)将构造型属性<<non-copyable>>设置为CPP_CG::Class::AdditionalBaseClasses(上面创建的基类的名称)。

    b)使构造型适用于类。

  3. 最后,将NonCopyable构造型添加到所有不可复制的类中。

答案 1 :(得分: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以获取更完整的示例。