如何初始化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
类型的类成员的方式(虽然它们不是指针)。