无法在myarm.cpp中的parseCmdline函数中访问argv值,该函数在构造函数中初始化。 不知道如何在构造函数中传递/初始化main(int argc,char * argv [])中的值?
的main.cpp
#include "myarm.h"
int main(int argc, char *argv[]){
cout<<"argv is:"<<argv[2]<<endl;
MyArm arm;
myarm.cpp
#include "myarm.h"
MyArm::MyArm(){
nj = 0;
done = false;
times = 0;
count = 50;
which_joint = 0;
cout<<"argv is:"<<argv[2]<<endl;
parseCmdline();
}
int MyArm::parseCmdline() {
params.fromCommand(argc, argv);
if (!params.check("robot")){
cout<<"Please specify name of the robot"<<endl;
cout<<"--robot name (e.g. TechNit)"<<endl;
return 1;
}
else if(!params.check("element")){
cout<<"Please specify name of the element"<<endl;
cout<<"--element name (e.g. left_arm)"<<endl;
return 1;
}
}
答案 0 :(得分:0)
将参数从main
传递到其他函数很简单,只需声明main
之类的其他函数:
void my_method(int argument_count, char * * arg_list);
int main(int argument_count, char * * arg_list)
{
my_method(argument_count, arg_list);
return EXIT_SUCCESS;
}
void my_method(int argument_count, char * * arg_list)
{
std::cout << "Argument Count: " << argument_count << "\n";
for (int i = 0; i < argument_count; ++i)
{
std::cout << "Argument [" << i << "]: " << arg_list[i] << "\n";
}
}
答案 1 :(得分:0)
向构造函数添加参数:
MyArm::MyArm(int argc, char *argv[])
然后实例化为
MyArm arm(argc, argv);
但事实证明这些参数需要由
使用int MyArm::parseCmdline()
所以parseCmdline
也需要重新定义
int MyArm::parseCmdline(int argc, char *argv[])
并使用
进行调用parseCmdline(argc, argv);
看模式?如果没有,我建议您更深入地阅读教科书或getting a better text book。