对话存在对象声明(在 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
}
感谢。
答案 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方法中的示例。