указатель на определение типа функции членства константы

Pouton coroutines являются синтаксическим сахаром для генераторов, с некоторыми дополнительными ограничениями в их поведении (так что их назначение явно отличается и не смешивается). Вы не можете сделать:

next(foo())
TypeError: 'coroutine' object is not an iterator

, потому что он отключен явно. Однако вы можете сделать:

foo().send(None)
Hello
Hello
Hello
...

, что эквивалентно next() для генератора.

22
задан oldcig 16 June 2010 в 04:54
поделиться

2 ответа

Вы хотите следующее:

typedef void (K::*MemFuncType)() const;

Если вы хотите по-прежнему основывать MemFuncType на FuncType , вам необходимо изменить FuncType :

typedef void FuncType() const;
typedef FuncType K::* MemFuncType;
34
ответ дан 29 November 2019 в 04:40
поделиться

Другой более прямой способ сделать это (предотвращение using и typedef с - это:

#include <iostream>

class Object
{
    int i_;
public:
    int j_;
    Object()
        : Object(0,0)
    {}
    Object(int i, int j)
        : i_(i),
        j_(j)
    {}

    void printIplusJplusArgConst(int arg) const
    {
        std::cout << i_ + j_ + arg << '\n';
    }
};

int main(void)
{
    void (Object::*mpc)(int) const = &Object::printIplusJplusArgConst;

    Object o{1,2};
    (o.*mpc)(3);    // prints 6

    return 0;
}

mpc указатель метода константы на Object.

0
ответ дан 29 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: