在C ++中强制变量为const

时间:2015-07-28 20:56:51

标签: c++ templates casting const

编译器在以下代码片段中抱怨,它说cx不是常量表达式。由于cx不是常量,因此将其作为函数T()的模板参数传递是无效的。但是,getFoo()不是const函数吗?因此不是x const而是cx const?即使x不是,cx是不是强制const为const标识符?

如何使cx const成功传递为T()的有效模板参数?



    //M is an instance of class C
    unsigned int x = M.getFoo(); //isn't this supposedly be constant?
    const unsigned int cx = x;
    C<cx> Mt = M.T<cx>();


调用C类的以下2个公共成员函数:



    const int getFoo() const{    
        return foo; //a private variable which value is set in the constructor 
    }




    <template unsigned int ROWS>
    const C<ROWS> T() const{
        //after some declarations and computations...
        return Ct;
    }


0 个答案:

没有答案