• <bdo id='GYG2x'></bdo><ul id='GYG2x'></ul>

    <small id='GYG2x'></small><noframes id='GYG2x'>

    1. <i id='GYG2x'><tr id='GYG2x'><dt id='GYG2x'><q id='GYG2x'><span id='GYG2x'><b id='GYG2x'><form id='GYG2x'><ins id='GYG2x'></ins><ul id='GYG2x'></ul><sub id='GYG2x'></sub></form><legend id='GYG2x'></legend><bdo id='GYG2x'><pre id='GYG2x'><center id='GYG2x'></center></pre></bdo></b><th id='GYG2x'></th></span></q></dt></tr></i><div id='GYG2x'><tfoot id='GYG2x'></tfoot><dl id='GYG2x'><fieldset id='GYG2x'></fieldset></dl></div>

      <legend id='GYG2x'><style id='GYG2x'><dir id='GYG2x'><q id='GYG2x'></q></dir></style></legend>

        <tfoot id='GYG2x'></tfoot>

        扩展在 if/else 序列中初始化的变量的范围

        时间:2023-10-17
        • <tfoot id='PIm9v'></tfoot>

              <tbody id='PIm9v'></tbody>

            1. <legend id='PIm9v'><style id='PIm9v'><dir id='PIm9v'><q id='PIm9v'></q></dir></style></legend>
            2. <small id='PIm9v'></small><noframes id='PIm9v'>

              <i id='PIm9v'><tr id='PIm9v'><dt id='PIm9v'><q id='PIm9v'><span id='PIm9v'><b id='PIm9v'><form id='PIm9v'><ins id='PIm9v'></ins><ul id='PIm9v'></ul><sub id='PIm9v'></sub></form><legend id='PIm9v'></legend><bdo id='PIm9v'><pre id='PIm9v'><center id='PIm9v'></center></pre></bdo></b><th id='PIm9v'></th></span></q></dt></tr></i><div id='PIm9v'><tfoot id='PIm9v'></tfoot><dl id='PIm9v'><fieldset id='PIm9v'></fieldset></dl></div>
                • <bdo id='PIm9v'></bdo><ul id='PIm9v'></ul>
                  本文介绍了扩展在 if/else 序列中初始化的变量的范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在编写一段代码,其中我想根据条件使用类的不同构造函数.到目前为止,我已经使用 ifelse 语句来构造对象,但该实例随后被困"在括号中,无法在代码中进一步使用.

                  I'm writing a piece of code in which I'd like to use a different constructor of a class depending on a condition. So far I've used if and else statements to construct the object, but the instance is then 'trapped' in the brackets and can't be used further in the code.

                  代码如下:

                  if (my_boolean){
                      MyClass my_object(arg1); //calling a first constructor
                  }
                  else {
                      MyClass my_object(arg1,arg2); //calling another constructor
                  }
                  //more code using my_object
                  

                  到目前为止,我尝试使用 static 关键字但没有成功.有条件地使用不同的构造函数而不必重新定义构造函数的通用方法吗?

                  I tried using the static keyword without success so far. Is there a common way of conditionally using different constructors without having to redefine the constructors?

                  推荐答案

                  请尝试以下操作:)

                  MyClass my_object = my_boolean ? MyClass(arg1) : MyClass(arg1,arg2);
                  

                  考虑到即使类没有默认构造函数,这段代码也能工作.

                  Take into account that this code will work even if the class has no default constructor.

                  这是一个示范性的例子

                  #include <iostream> 
                  #include <cstdlib>
                  #include <ctime>
                  
                  int main () 
                  {
                      struct Point
                      {
                          Point( int x ) : x( x ) {}
                          Point( int x, int y ) : x( x ), y( y ) {}
                          int x = 0;
                          int y = 0;
                      };
                  
                      std::srand( ( unsigned )std::time( 0 ) );
                  
                      Point p = std::rand() % 2 ? Point( 1 ) : Point( 1, 2 );
                  
                      std::cout << "p.x = " << p.x << ", p.y = " << p.y << std::endl;  
                  
                      return 0; 
                  }
                  

                  我得到了以下输出

                  p.x = 1, p.y = 2
                  

                  你得到了什么输出?:)

                  What output have you gotten? :)

                  这篇关于扩展在 if/else 序列中初始化的变量的范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:基于作用域的锁守卫和返回值的时间安排 下一篇:为什么 GCC 允许在不首先使用其命名空间的情况下调用此函数?

                  相关文章

                  <i id='flFSI'><tr id='flFSI'><dt id='flFSI'><q id='flFSI'><span id='flFSI'><b id='flFSI'><form id='flFSI'><ins id='flFSI'></ins><ul id='flFSI'></ul><sub id='flFSI'></sub></form><legend id='flFSI'></legend><bdo id='flFSI'><pre id='flFSI'><center id='flFSI'></center></pre></bdo></b><th id='flFSI'></th></span></q></dt></tr></i><div id='flFSI'><tfoot id='flFSI'></tfoot><dl id='flFSI'><fieldset id='flFSI'></fieldset></dl></div>

                  <legend id='flFSI'><style id='flFSI'><dir id='flFSI'><q id='flFSI'></q></dir></style></legend>

                  1. <tfoot id='flFSI'></tfoot>

                    1. <small id='flFSI'></small><noframes id='flFSI'>

                        <bdo id='flFSI'></bdo><ul id='flFSI'></ul>