gpt4 book ai didi

c++ - 有没有办法重载 operator= 以对右侧的函数具有特定行为

转载 作者:行者123 更新时间:2023-11-30 01:59:11 25 4
gpt4 key购买 nike

我有一个名为 Image 的类,我希望非成员函数返回到 Image 中。

Image::Image(const char * src);
Image::Image& operator= (const Image& p);
Image requestImg(std::string filename); //not a member function

我是这样使用它的:

Image p = requestImg("grass.png");

这很好,但是 - 我希望能够让 requestImg 生成一个线程,将图像加载到 Image 对象 (p) 中,同时修改它对象的状态为 loading=true

换句话说。

Image p = requestImg("grass.png");  //image is loading
std::cout << p.loading << std::endl; //true
//some time passes
std::cout << p.loading << std::endl; //false

p 最初不能将 loading 设置为 true,因为它不会加载并且不会导致合理的命名。我意识到使用成员函数会更容易,甚至可以将指针传递给该函数,但是有什么方法可以按照我列出的那样执行此操作吗?

最佳答案

可以离开Image按原样使用 std::async ,这会给你一个 std::future<Image> .您可以决定何时需要结果:

#include <future>

auto p = std::async(std::launch::async, &requestImg,"grass.png"); // load image asynchronously
//some time passes
// do other work

// now we really need the image
auto img = p.get(); // blocking call, requires async call to be done loading image.

关于c++ - 有没有办法重载 operator= 以对右侧的函数具有特定行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16515625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com