理解函数模板的参数

时间:2015-04-14 16:20:12

标签: c++ templates

阅读代码库并拼命想要理解它。

template<typename selection>
void run_z_p_selection(xml_config &my_config){
system::start();
std::shared_ptr<selection> my = std::make_shared<selection>(my_config, machine, enable, timet);
system::addSelection(my);
 }
  1. (xml_config&amp; my config){}。这是一个被创建为地址的对象吗?我不明白。
  2. 如果它们不是函数的输入参数,那么(my_config,machine,enable,timet)的来源是什么?

2 个答案:

答案 0 :(得分:0)

  1. 这就是所谓的pass by reference

  2. 在没有看到整个代码库的情况下很难分辨,但看起来这些是全局变量。也许system::start()设置了它们?

答案 1 :(得分:0)

  1. xml_config &my_config是一个参考:http://en.cppreference.com/w/cpp/language/reference参考是:
  2.   

    已存在的对象或函数的别名

    1. my_config是传递的参数xml_config&machineenabletimet都是您的函数范围内的变量。这可能意味着很多事情。

      • 如果run_z_p_selection是方法,则这些可以是成员变量。
      • 由于run_z_p_selection是一个模板,我假设它是在您的标头中定义的,因此您不需要查看包含的源文件,只能在包含的标题中查找。
      • 变量必须在run_z_p_selection的命名空间,包含命名空间或全局命名空间中定义。
    2. 如果您有Visual Studio,可以选择要了解的变量,然后按: Ctrl + F12 跳转到项目中定义的位置。< / p>