小编Dor*_*hua的帖子

使用std :: thread从派生类调用overriden方法

我想尝试这样的事情:

int main()
{
    class Base
    {
    public:
        Base() = default;
        virtual void print() = 0;
        void CallThread()
        {
            std::thread(&Base::print, *this);
        };
    };

    class derived1 : public Base
    {
    public:
        derived1() = default;
        void print() { printf("this is derived1\n"); }

    };
    class derived2 : public Base
    {
    public:
        derived2() = default;
        void print() { printf("this is derived2\n"); }

    };
    Base* ptr;
    ptr = new derived1();
    ptr->CallThread();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

这是派生的1.

问题是它甚至不会编译.我正在使用VisualStudio 2013.

错误是:

错误2错误C3640:'main :: Base :: [thunk]:__ thiscall …

c++ polymorphism c++11

3
推荐指数
1
解决办法
704
查看次数

标签 统计

c++ ×1

c++11 ×1

polymorphism ×1