错误:分配抽象类类型'JIntent'的对象

时间:2015-05-23 10:02:08

标签: android c++ c++builder firemonkey

如何修复此错误?

代码:

Intent *JIntent; //main.h
//menu.cpp
Intent = new JIntent(this); //Error

并创建类:

class TestClass
{
    public:
        JIntent *MyIntent;
        JService *MyService;
        virtual int FuncClass() = 0;
};

int TestClass::FuncClass() {
    MyIntent = new JIntent(this);
    MyService = new JService(this);

}

不起作用。我不明白这一点。

2 个答案:

答案 0 :(得分:0)

JIntentJService是抽象接口,您无法直接实例化它们。对于JIntent,您必须实例化TJIntent类,并将其分配给_di_JIntent变量(包装接口以处理引用计数);

#include <Androidapi.JNI.App.hpp>
#include <Androidapi.JNI.GraphicsContentViewText.hpp>

class TestClass
{
    public:
        _di_JIntent MyIntent;
        _di_JService MyService;
        virtual int FuncClass() = 0;
};

int TestClass::FuncClass() {
    MyIntent = new TJIntent;
    MyService = ...;
}

话虽如此,JService代表Android的Service类。有一个伴随的TJService类,但它意味着派生,而不是实例化。 Delphi / C ++ Builder本身并不支持实现Android服务,尽管技术上可以通过一些额外的工作(涉及Java存根)来实现:

Delphi and Android services

Delphi and Android services (part 2)

答案 1 :(得分:-1)

这是怎么解决的?这个错误.. JIntent - 类

#include<Androidapi.JNI.App.hpp> //JService
#include<Androidapi.JNI.GraphicsContentViewText.hpp> //JIntent

这是FireMonkey