种私有静态成员编译不能通过
类私有静态成员编译不能通过。
文件:
#ifndef ANDROID_MYCLIENT_H
#define ANDROID_MYCLIENT_H
#include "imyclient.h"
namespace android
{
class MyClient:public BnMyClient, public IBinder::DeathRecipient {
public:
~MyClient();
void add100(int n);
void getnum(int a, int b);
void getstring(const char *str);
void sendbinder();
virtual void sendint(int i);
private:
MyClient();
virtual void binderDied(const wp<IBinder>& who);
class DeathNotifier:public IBinder::DeathRecipient
{
public:
DeathNotifier(){}
virtual void binderDied(const wp<IBinder>& who);
};
friend class DeathNotifier;
static sp<DeathNotifier> mDeathNotfier;
static const void getMyService();
//通过ServiceManager获取服务接口
};
}; //namespace
#endif
cpp文件
#include <binder/IServiceManager.h>
#include <binder/IPCThreadState.h>
#include "myclient.h"
namespace android
{
sp<MyClient::DeathNotifier> MyClient::mDeathNotifier;
sp<IBinder> binder;
//sp<MyClient::DeathNotifier> MyClient::mDeathNotifier;
MyClient::MyClient()
{
}
MyClient::~MyClient()
{
}
void MyClient::add100(int n)
{
getMyService();
Parcel data, reply;
int answer;
data.writeInt32(getpid());
data.writeInt32(n);
LOGE("BpMyService::create remote()->transact()/n");
binder->transact(0, data, &reply);
answer = reply.readInt32();
printf("answner=%d\n", answer);
return;
}
void MyClient::getnum(int a, int b)
{
getMyService();
Parcel data,reply;
int answer;
data.writeInt32(getpid());
data.writeInt32(a);
data.writeInt32(b);
binder->transact(1, data, &reply);
answer = reply.readInt32();
printf("1+2 = %d\n",answer);
}
void MyClient::getstring(const char *str)
{
getMyService();
Parcel data, reply;
LOGE("SendMsg: %s", str);
data.writeInt32(getpid());
data.writeCString(str);
binder->transact(2, data, &reply);
const char *pAnswer=reply.readCString();
printf("pAnswer = %s\n", pAnswer);
}
void MyClient::sendbinder()
{
getMyService();
Parcel data, reply;
data.writeStrongBinder(this->asBinder());
binder->transact(3, data, &reply);
}
void MyClient::sendint(int i)
文件:
#ifndef ANDROID_MYCLIENT_H
#define ANDROID_MYCLIENT_H
#include "imyclient.h"
namespace android
{
class MyClient:public BnMyClient, public IBinder::DeathRecipient {
public:
~MyClient();
void add100(int n);
void getnum(int a, int b);
void getstring(const char *str);
void sendbinder();
virtual void sendint(int i);
private:
MyClient();
virtual void binderDied(const wp<IBinder>& who);
class DeathNotifier:public IBinder::DeathRecipient
{
public:
DeathNotifier(){}
virtual void binderDied(const wp<IBinder>& who);
};
friend class DeathNotifier;
static sp<DeathNotifier> mDeathNotfier;
static const void getMyService();
//通过ServiceManager获取服务接口
};
}; //namespace
#endif
cpp文件
#include <binder/IServiceManager.h>
#include <binder/IPCThreadState.h>
#include "myclient.h"
namespace android
{
sp<MyClient::DeathNotifier> MyClient::mDeathNotifier;
sp<IBinder> binder;
//sp<MyClient::DeathNotifier> MyClient::mDeathNotifier;
MyClient::MyClient()
{
}
MyClient::~MyClient()
{
}
void MyClient::add100(int n)
{
getMyService();
Parcel data, reply;
int answer;
data.writeInt32(getpid());
data.writeInt32(n);
LOGE("BpMyService::create remote()->transact()/n");
binder->transact(0, data, &reply);
answer = reply.readInt32();
printf("answner=%d\n", answer);
return;
}
void MyClient::getnum(int a, int b)
{
getMyService();
Parcel data,reply;
int answer;
data.writeInt32(getpid());
data.writeInt32(a);
data.writeInt32(b);
binder->transact(1, data, &reply);
answer = reply.readInt32();
printf("1+2 = %d\n",answer);
}
void MyClient::getstring(const char *str)
{
getMyService();
Parcel data, reply;
LOGE("SendMsg: %s", str);
data.writeInt32(getpid());
data.writeCString(str);
binder->transact(2, data, &reply);
const char *pAnswer=reply.readCString();
printf("pAnswer = %s\n", pAnswer);
}
void MyClient::sendbinder()
{
getMyService();
Parcel data, reply;
data.writeStrongBinder(this->asBinder());
binder->transact(3, data, &reply);
}
void MyClient::sendint(int i)