使用 Header 在 Class 中创建 std::thread

Creating std::thread in Class with Header

如何初始化 DefenseThread 以便它开始执行 Defend()?我已经看到很多关于如何从没有 header 但没有 header 的 .cpp 文件中执行此操作的示例。

无效CommandDefend::DefendStart()

出现以下错误:

'&' 需要 I-value

Header:

#pragma once

#include <thread>

class CommandDefend : public ICommand
{
public:
CommandDefend();
~CommandDefend();

private:
thread* DefenseThread;

/// <summary>
/// Starts the commands execution.
/// </summary>
void DefendStart();

/// <summary>
/// Does the actual defending.
/// </summary>
void Defend();
};

CPP:

#include "stdafx.h"
#include "CommandDefend.h"


void CommandDefend::DefendStart()
{//ERROR HERE!!!!!!
    DefenseThread = new thread(&CommandDefend::Defend);

}

void CommandDefend::Defend()
{
}

如果替换

DefenseThread = new thread(&CommandDefend::Defend);

DefenseThread = new thread(&CommandDefend::Defend, this);

它应该可以工作,因为这是我初始化 class 类型 std::thread 成员的方式(虽然它们不是指针)。