小编Mlo*_*loc的帖子

C++中函数指针的问题

我打算使用函数指针在类中实现不同的函数.但是,在尝试实现一个这样的功能时,我遇到了一些麻烦.

代码在这里:

std::vector<int> * (*create_vector)()
{
    std::vector<int> * vec_p = new std::vector<int>;
    return vec_p;
}
Run Code Online (Sandbox Code Playgroud)

错误如下:

3: [Error] expected primary-expression before '*' token
3: [Error] 'vec_p' was not declared in this scope
3: [Error] expected '}' before ';' token 
4: [Error] expected unqualified-id before 'return' 
5: [Error] expected declaration before '}' token
Run Code Online (Sandbox Code Playgroud)

有什么我误解了函数指针,还是一个不同的问题?

c++ function-pointers

5
推荐指数
2
解决办法
812
查看次数

提升:编程中的线程和互斥体

我正在尝试使用C++中的线程和互斥体进行简单的操作.

这是代码:

#include <iostream>

#include <boost/thread/thread.hpp>

class mutex_test
{
    private:
        boost::mutex mut;
    public:
        void operator()()
        {
            boost::mutex::scoped_lock lock(mut);
            std::cout << "Hi!" << std::endl;
        }
};

int main()
{
    mutex_test tester;
    boost::thread tester_thread(tester);
    tester_thread.join();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在编译时,我收到此错误:

In file included from C:\boost/boost/thread/detail/thread.hpp:15:0,
                 from C:\boost/boost/thread/thread.hpp:22,
                 from main.cpp:3:
C:\boost/boost/thread/detail/move.hpp: In instantiation of 'typename boost::decay<T>::type boost::thread_detail::decay_copy(T&&) [with T = mutex_test&; typename boost::decay<T>::type = mutex_test]':
C:\boost/boost/thread/detail/thread.hpp:265:88:   required from 'boost::thread::thread(F&&) [with F = mutex_test&]'
main.cpp:20:36:   required from here
C:\boost/boost/thread/detail/move.hpp:246:37: error: use of deleted function 'mutex_test::mutex_test(const …
Run Code Online (Sandbox Code Playgroud)

c++ boost functor boost-thread boost-mutex

2
推荐指数
1
解决办法
1557
查看次数