如何初始化DefenseThread,使其开始执行Defend()?我已经看到了很多有关如何从.cpp文件中删除文件的示例,这些文件没有标头,但没有标头。

无效CommandDefend :: DefendStart()

获取以下错误:

“&”需要I值

标头:

#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);


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

10-07 13:19