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