小编sha*_*vey的帖子

将结构实例存储在std :: map中

我正在尝试将一些结构映射到其他一些实例,如下所示:

template <typename T>
class Component {
public:

    typedef std::map<EntityID, T> instances_map;

    instances_map instances;

    Component() {};

    T add(EntityID id) {
        T* t = new T();
        instances[id] = *t;
        return *t;
    };  
};
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用它:

struct UnitInfos {
    int owner_id;
    int health;
    float x, y;
};

class LogicComponent : public Component<UnitInfos> {};
Run Code Online (Sandbox Code Playgroud)

问题是,以后稍后检索数据时,如下所示:

comp.instance[id];
Run Code Online (Sandbox Code Playgroud)

我得到一个breand新对象,其属性初始化为默认值.

这段代码是否存在内在错误,或者我是否遗漏了有关该问题的信息?


根据@aaa建议,我将代码更改为

typedef std::map<EntityID, T> instances_map;
instances_map instances;
T& add(EntityID id) {
    instances[id] = T();
    return instances[id];
};
Run Code Online (Sandbox Code Playgroud)

但当我访问它

UnitInfos &info = logic_c.instances[id];
Run Code Online (Sandbox Code Playgroud)

info.x的值仍为0.任何指针?


问题是我如何在另一个类中存储对LogicComponent的引用.使用LogicComponent logic_c; …

c++ templates struct stl

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

Python杀死线程

我试图在python中杀死一个线程.一个例外是这样做的首选方法,作为线程的run方法通过try的优雅退出:except:pair将允许关闭资源.

我试过:有没有办法在Python中杀死一个线程?,但是指定在代码执行系统调用时不起作用(如time.sleep).有没有办法在另一个线程(或进程中,不要介意)中引发一个异常,它不起作用线程正在执行什么?

python multithreading sleep

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

glReadPixels和GL_ALPHA

我正在尝试使用glReadPixels读取alpha像素值.我做的第一件事就是单独读取像素.为了加快速度,我尝试一次读取所有像素:

GLubyte *pixels = new GLubyte[w*h*4];
glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
Run Code Online (Sandbox Code Playgroud)

它工作,但真的很慢.现在我试图只检索alpha值,而不会浪费RGB组件的空间:

GLubyte *pixels = new GLubyte[w*h];
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, w, h, GL_ALPHA, GL_UNSIGNED_BYTE, pixels);
Run Code Online (Sandbox Code Playgroud)

但我明白了:OpenGL error 0x0500 in -[EAGLView swapBuffers].

任何想法为什么INVALID_ENUM (0x0500)抛出?

iphone opengl-es cocos2d-iphone

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

代表参考本身

委托有没有办法引用自己?我正在寻找一种方法来做到这一点:

delegate void Foo();
list<Foo> foos;

void test() {
    list.Add(delegate() {
        list.Remove(/* this delegate */);
    });
}
Run Code Online (Sandbox Code Playgroud)

c# delegates

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

Python二进制差异

我正在尝试使用bsdiff(或你提出的任何二进制diff实现)来计算并将diff应用于随机二进制数据.我想将它用于数据库中的数据,因此最好不要将它们写入磁盘并将它们传递给bsdiff.exe.

是否有任何包装库或python中的方式来做到这一点?

python diff

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

FCGI htaccess处理程序

我正在尝试在共享托管服务提供商上设置django.我按照http://helpdesk.bluehost.com/index.php/kb/article/000531上的说明进行操作 ,几乎让它正常工作.

我现在面临的问题是流量是通过fcgi文件正确路由的,但文件本身在浏览器中显示为纯文本.如果我在ssh shell中运行./mysite.fcgi,我会得到默认的django欢迎页面.

我的.htaccess是:

AddHandler fastcgi-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

和mysite.fcgi:

#!/usr/bin/python2.6
import sys, os
os.environ['DJANGO_SETTINGS_MODULE'] = "icm.settings"

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
Run Code Online (Sandbox Code Playgroud)

谢谢.

django .htaccess shared-hosting fastcgi

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

Objective-c单例基类

有没有办法用objective-c创建一个Singleton模式,这将使客户端代码能够获得任何子类的共享实例?

我试过了:

@interface Base : NSObject {}
+(id)instance;
@end

@implementation Base
static id _instance;
+(id)instance {
    if (!_instance) {
        _instance = [[self alloc] init];
    }
    return _instance;
}
@end
Run Code Online (Sandbox Code Playgroud)

但是调用任何子类[AmazingThing instance]只会返回通过此机制创建的第一个实例,无论它是什么类型_instance.任何干净的解决方法?

编辑

我意识到(在回复已删除的答案时)我可以通过将实现更改为:

static NSMutableDictionary *_instances;

+(id)instance {
    if (!_instances) {
        _instances = [[NSMutableDictionary alloc] init];
    }
    id instance = [_instances objectForKey:self];
    if (!instance) {
        instance = [[self alloc] init];
        [_instances setObject:instance forKey:self];
    }
    return instance;
}
Run Code Online (Sandbox Code Playgroud)

它现在按预期工作.不过,我很想知道是否有更好的方法来做到这一点.

singleton objective-c

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

在python中创建控制台

我希望拥有与您在终端中输入python时相同的功能(历史记录,...).我的脚本经历了一堆设置代码,准备好后,用户应该有一个命令提示符.实现这一目标的最佳方法是什么?

python console interactive

3
推荐指数
2
解决办法
2042
查看次数

根据iOS版本启用不同的功能

在我们正在构建的应用程序中,我们想要使用UILocalNotifications,它们仅在4.0中提供.

检查对象是否响应选择器非常简单,但是如何根据操作系统在类上定义委托方法呢?我得到的问题是我的app delegate实现了

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
Run Code Online (Sandbox Code Playgroud)

方法,使应用程序在iOS 3.2设备(ipad)上启动时崩溃.

不必释放多个构建将是优选的.

iphone version objective-c ios

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

图形视觉布局

我正在尝试绘制图形(树),我正在寻找一种算法来布局图形.在c/c ++/objective-c中有没有库可以做到这一点?否则,有人可以指出一个很好的资源,最好是在线提供吗?

节点可能具有不同的大小.

algorithm tree layout graph

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