C++ 在哪里可以找到一个例子,说明;开关";运算符是否可以由一系列函数替换?

C++ 在哪里可以找到一个例子,说明;开关";运算符是否可以由一系列函数替换?,c++,qt,C++,Qt,我需要一个函数,它可以生成一些阴影: typedef const bool (myClass::*DecoderFactory) (void); DecoderFactory * decoderFactory = new DecoderFactory[1]; QVector<DecoderFactory> * decoderFunctions = new QVector<DecoderFactory>; decoderFactory[0] = &MyClass

我需要一个函数,它可以生成一些阴影:

typedef const bool (myClass::*DecoderFactory) (void);

DecoderFactory * decoderFactory = new DecoderFactory[1];
QVector<DecoderFactory> * decoderFunctions = new QVector<DecoderFactory>;

decoderFactory[0] = &MyClass::do0;

decoderFunctions->push_back(&MyClass::do0);
decoderFunctions->push_back(&MyClass::do1);
...


const bool someFunction(const short int code)
{
...
   decoderFactory[0] = decoderFunctions->value(code);
   if (!(this->*decoderFactory[0])()) return false;

   return true;

}


const bool do0()
{
   //do some
}

const bool do1()
{
   //do some
}

...

??我怎么能不使用一个元素数组,这明显的像S**ToCalgs:

< P>如果你使用C++容器和C++函数包装器,它可以变得更容易:

struct MyClass
{
    typedef std::function<bool()> DecoderFactory;
    std::vector<DecoderFactory> decoderFunctions;

    MyClass() {
        decoderFunctions.push_back(std::bind(&MyClass::do0, this));
        decoderFunctions.push_back(std::bind(&MyClass::do1, this));
        //...
    }


    const bool someFunction(const short int code)
    {
       return decoderFunctions[code /*Did you mean CODE here instead of 0?;)*/]();
    }


    const bool do0()
    {
       //do some
    }

    const bool do1()
    {
       //do some
    }

};
struct MyClass
{
typedef std::函数解码器工厂;
std::矢量解码函数;
MyClass(){
decoderFunctions.push_back(std::bind(&MyClass::do0,this));
decoderFunctions.push_back(std::bind(&MyClass::do1,this));
//...
}
常量布尔函数(常量短整数代码)
{
return decoderFunctions[code/*您是指这里的code而不是0?;)*/]();
}
const bool do0()
{
//做一些
}
const bool do1()
{
//做一些
}
};

为什么你有
DecoderFactory*DecoderFactory=newdecoderfactory[1]?为什么需要这样做呢?到目前为止,我发现C和C++函数指针的最佳解释是:“添加:问题已经解决”,你应该把它作为答案。我已经把它从问题中删掉了,你仍然可以看到你在上写的东西。我真的不建议删除你的问题——把你学到的东西作为答案与未来的读者分享。
struct MyClass
{
    typedef std::function<bool()> DecoderFactory;
    std::vector<DecoderFactory> decoderFunctions;

    MyClass() {
        decoderFunctions.push_back(std::bind(&MyClass::do0, this));
        decoderFunctions.push_back(std::bind(&MyClass::do1, this));
        //...
    }


    const bool someFunction(const short int code)
    {
       return decoderFunctions[code /*Did you mean CODE here instead of 0?;)*/]();
    }


    const bool do0()
    {
       //do some
    }

    const bool do1()
    {
       //do some
    }

};