如何使类方法成为协程?这里有一个小例子。在这里,我试图从类方法创建协程,但编译器抛出以下错误:
错误:找不到此协程的承诺类型
52|std::载体vec=co_aWait等待函数1();
如何正确设置方法的协程特征_特征?
auto awaitable_func1() { struct Awaitable { std::vector<int> vec; bool await_ready() { return false; } void await_suspend(std::coroutine_handle<> coroutine) { vec = std::vector<int>{1,2,3,4,5}; coroutine.resume(); } auto await_resume() { return vec; } }; return Awaitable{}; } class Coroutine { public: void call(int); }; struct Promise { Promise(Coroutine){} void get_return_object() {} std::suspend_never initial_suspend() { return {}; } std::suspend_never final_suspend() { return {}; } void return_void() {} void unhandled_exception() { std::terminate(); } }; template<> struct std::coroutine_traits<void,Coroutine,int> { using promise_type = Promise; }; void Coroutine::call(int a) { std::vector<int> vec = co_await awaitable_func1(); for (size_t i = 0; i < vec.size(); i++) { std::cout << vec[i] + a << std::endl; } } int main() { Coroutine a; a.call(5); return 0; };