我在代码中发现了问题,但我不明白为什么它会像这样工作。我试图实现静态实例来从静态调用非静态方法。我真的需要这个没有结构良好的SDK我使用(Marmalade)模块。
我得到了Marmalade的错误,我试图删除似乎正在使用的对象。但是,如果我更改行:instance.http = new CIwHTTP(); 到这一行:http = new CIwHTTP(); 错误消失了。
但为什么它会像这样工作?我想到了这个例子 - 它是对我的班级的引用,就像"这个"变量。为什么这里有这么大的差异?我认为这里没有任何区别:" http。"和" instance.http。"但我怎么能完全按照"这个"引用这个类在静态方法中使用它?
===[ HTTP.h ]===
#ifndef HTTP_H
#define HTTP_H
#include <s3e.h>
#include "IwHTTP.h"
class HTTP {
public:
CIwHTTP *http;
HTTP();
~HTTP();
};
#endif
===[ HTTP.cpp ]===
#include "HTTP.h"
static HTTP instance;
char* result = NULL;
HTTP::HTTP() {
instance.http = new CIwHTTP();
}
HTTP::~HTTP() {
if ( http ) {
delete http;
}
s3eFree( result );
}
答案 0 :(得分:1)
不要放置&#34;实例。&#34;在HTTP构造函数中。否则你永远不会有多个实例。