小编Try*_*ost的帖子

如何在全新的线程上启动某个类的每个实例?

我正在写一个有趣的游戏,玩家可以跳跃并射击激光的精灵.它最多可以有三名玩家.我的班级Sprite对于所有三个玩家来说都是一样的,每个玩家都有不同的控制布局,具体取决于玩家#在构造中给出的.Sprite使用a KeyListener来起作用.

为了让我有多个玩家同时做事(比如拍摄激光或跳跃),我需要让每个创建的Sprite对象都在一个单独的线程上.我知道我可以Sprite在implements Runnable类上使用,但是这只运行Sprite新线程上的方法中的代码.这不起作用,因为run()它Sprite和其他类似的东西不会出现在新线程上.

我认为我应该使用"帮助器"类,keyPressed()然后在其implements Runnable方法中创建新的Sprite对象.然而,这似乎是一种混乱的方法.有没有办法让我run()在一个全新的线程上创建所有新对象(Sprites和所有这些都包含在这个线程中)?

码:

public class Sprite() implements KeyListener { //I want this class on a brand new thread
    int x;
    int y;
    int width;
    int height;
    Image spriteImage; 

    //code/methods for stuff

    //key listeners:

    @Override
    public void keyPressed(KeyEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void keyReleased(KeyEvent arg0) {
        // TODO Auto-generated method …
Run Code Online (Sandbox Code Playgroud)

java multithreading

7
推荐指数
1
解决办法
964
查看次数

我可以在头文件中定义宏吗?

我在 中有一个宏定义MyClass.h,如下所示:

#define _BufferSize_ 64
Run Code Online (Sandbox Code Playgroud)

我将 include 指令放置在MyClass.h以下内部main.cpp:

#include "MyClass.h"
Run Code Online (Sandbox Code Playgroud)

这是否意味着我可以_BufferSize_在main.cppand中使用MyClass.h?另外,这是好的做法吗?

c++ header

5
推荐指数
1
解决办法
1万
查看次数

如何知道创建对象时是否未传递参数?

我正在翻译一些代码,并使用这种完全未使用的专用语言,该代码指出如果传入了四个以上的参数(因为第5个参数是可选的),则对该参数的值做些事情,如下所示:

if (ParamCount > 4) {
    if (ID == 0) {
        ID = 0x700;
        if (mtrx > 0) {ID = 0x11AA0FF0; }
    }
    BaseID = ID;
} else {
    BaseID = ID;
}
Run Code Online (Sandbox Code Playgroud)

我将如何用C ++ 98编写出来?我试图将这些代码转换为类时,创建了一个包含这些参数的构造函数,但是当参数是可选的时,您必须为其设置一个值,例如0,以至于我想。

c++ c++98

4
推荐指数
1
解决办法
114
查看次数

当数据存储为uint8_t的向量时如何传递“ char *数据”?

我有一个这样定义的类:

class sco
{
private:

public:
    vector<uint8_t> data;

    sco(vector<uint8_t> data);
    ~sco();

};
Run Code Online (Sandbox Code Playgroud)

构造函数在哪里:

sco::sco(vector<uint8_t> data) {       
    this->data = data;
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个这样声明的函数:

void send(unsigned& id, char* data, char len);
Run Code Online (Sandbox Code Playgroud)

我的问题是我需要将sco成员的数据传递给它,但是类型和指针的区别使我感到困惑。如果我有一个newSco成员,其中包含一些数据,将这个send函数调用为send(someId, (char*)&(newSco.data.begin()), newSco.data.size() );吗?请注意,函数send是针对微控制器的,它采用char类型,因此我无法更改它,也不能更改uint8_t,因为这是来自串行通信的类型。我已经浪费了超过三天的时间,试图将类型转换为相互的东西,只是为了将其反向,因为它破坏了一切。我放弃了,我将不再尝试操纵类型,因为我只是没有时间,即使是不好的做法也只需要它来工作。我以为uint8_t和char大小相同,所以没关系。

c++ c++98 mbed

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

标签 统计

c++ ×3

c++98 ×2

header ×1

java ×1

mbed ×1

multithreading ×1