c++日常小问题

语法解析问题。

当给一个变量构造函数传递一个临时变量,而不是命名的变量,c++编译器会将其解析为函数声明,而不是类型对象的定义。

class hello
{
    void operator()()
    {
        std::cout << "hello";
    }
}

std::thread haha(hello());

这里是声明了一个haha函数,返回值是 std::thread ,参数是hello func() 返回值是hello类型的无参函数。

有两种解决方案

1. std::thread haha((haha())); // 多套一层括号

2. std::thread haha{haha()}; // 新初始化方法

posted @ 2020-12-18 15:37  BackSword  阅读(67)  评论(0编辑  收藏  举报