• <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 序列中初始化的变量的范围

        Expand scope of a variable initialized in a if/else sequence(扩展在 if/else 序列中初始化的变量的范围)
        • <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 序列中初始化的变量的范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Is Type(::x); valid?(是类型(::x);有效的?)
                  Difference between an inline function and static inline function(内联函数和静态内联函数的区别)
                  Compilation fails randomly: quot;cannot open program databasequot;(编译随机失败:“无法打开程序数据库)
                  Too many initializers error for a simple array in bcc32(bcc32 中的简单数组的初始值设定项过多错误)
                  No Member named stoi in namespace std(命名空间 std 中没有名为 stoi 的成员)
                  Error using a constexpr as a template parameter within the same class(在同一个类中使用 constexpr 作为模板参数时出错)
                    <tbody id='flFSI'></tbody>
                  <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>

                    • <tfoot id='flFSI'></tfoot>

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

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