Это заголовок класса генератора;
#ifndef GENERATOR_H
#define GENERATOR_H
class Generator
{
public:
Generator(int);
~Generator();
int getBits();
private:
int bits;
};
#endif // GENERATOR_H
.
Это заголовок прокси-класса, который является синглтон-классом, полученным из Generator;
#ifndef PROXY_H
#define PROXY_H
#include "Generator.h"
class Proxy: private Generator
{
public:
~Proxy();
static Proxy* getInstance(int);
Generator * operator ->();
int checkvalue();
private:
Proxy();
Proxy(int);
int bits;
int counter;
static Proxy* instance;
Generator * rPointer;
};
#endif // GENERATORPROXY_H
.
Это файл CPP для Прокси.
Proxy::Proxy(int inputbits):Generator(inputbits)
{
}
Proxy::~Proxy()
{
}
Generator * Proxy::operator ->()
{
counter++;
if(counter<=10)
return rPointer;
else
return 0;
}
Proxy* Proxy::instance = 0;
Proxy* Proxy::getInstance(int inputbits)
{
if(instance==0)
{
instance = new Proxy(inputbits);
}
return instance;
}
Вопрос: Когда я создаю прокси-объект в функции main, как я могу вызвать функцию getBits () в main?
Это часть основной функции:
Proxy* px = Proxy::getInstance(4);
cout << px->getBits() << endl;
Когда я попробовал это, ошибка произошла следующим образом:
Чтобы получить доступ к Генератору в основном, я сделал оператор следующим образом: Generator * Proxy::operator ->()
, который находится в файле CPP для прокси. Как я могу получить доступ к функции getBits () в основной функции? Спасибо всем за помощь.