如何管理方法\变量调用者类?

时间:2017-12-05 09:30:26

标签: object dialog axapta dynamics-ax-2012 x++

类标准类中的

对话存在对象声明(在 classDeclaration 中)

#include<iostream>
#include<vector>
#include<valarray>

int main()
{
std::vector<int> seq{1,2,3,4,5,6,7,8,9,10};
std::valarray<int> seq_add {seq.data(), seq.size()};
std::cout << "sum = " << seq_add.sum() << "\n";

return 0;
}

在这堂课中,我能够获得来电者班级的名字。例如:

Object caller;

如果我抓住IF,我想将 parm 方法中的参数传递给 MyCallerClass

我如何传递一个简单的参数?例如:

if (caller.name() == classStr(MyCallerClass) )
{
     // manage-pass variable in caller class
}

感谢。

2 个答案:

答案 0 :(得分:3)

只需调用方法:

ave(x, cumsum(x > 0))
 [1] 2.0000000 2.0000000 2.0000000 4.0000000 1.0000000 1.0000000 2.0000000 
 [8] 0.6666667 0.6666667 0.6666667 5.0000000

由于if (caller.name() == classStr(MyCallerClass)) caller.myParmMethod('abc'); 的类型为caller,编译器会接受任何方法名称,它使用duck typing。 如果调用者没有该方法,则会发生运行时错误。

那就是说,你应该更改标准Object类。 你可以扩展课程,虽然这不太可能是正确的。

应该做什么取决于你没有提供的信息。

答案 1 :(得分:1)

正确&amp;安全的方法是:

   MyCallerClass myCalss;

   if (caller && classidget(caller) == classnum(MyCallerClass))
   {
      myClass = caller;
      myClass.myParmMethod('abc');
   }

请参阅form.init方法中的示例。