从静态调用非静态方法的实例

时间:2014-03-30 01:31:05

标签: c++ instance

我在代码中发现了问题,但我不明白为什么它会像这样工作。我试图实现静态实例来从静态调用非静态方法。我真的需要这个没有结构良好的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 );
}

1 个答案:

答案 0 :(得分:1)

不要放置&#34;实例。&#34;在HTTP构造函数中。否则你永远不会有多个实例。