Как поместить параметр int в конструктор Sigleton в C ++ - PullRequest
0 голосов
/ 25 апреля 2018
#include "Generator.h"
#include "Proxy.h"

Proxy::Proxy(int inputbits):Generator(inputbits)
{

}

Proxy::~Proxy()
{

}

Generator * Proxy::operator ->()
{
    if(counter<=10)
    return rPointer;
    else
    return 0;
}

//Proxy* Proxy::instance = 0;

Proxy* Proxy::getInstance()
{
    static Proxy* instance;
    return instance;
}

.

#ifndef PROXY_H
#define PROXY_H
#include "Generator.h"

class Proxy: private Generator
{
    public:
        ~Proxy();
        static Proxy* getInstance();
        Generator * operator ->();
    private:
        Proxy();
        Proxy(int);
        int bits;
        int counter;
        Generator * rPointer;
};

#endif // GENERATORPROXY_H

Это мой код для синглтона, который я пытаюсь сделать, я бы хотел передать аргумент конструктору после создания объекта Proxy вОсновная функция как Proxy::Proxy(int inputbits):Generator(inputbits) Я собирался использовать функцию getInstance, но она не работала.Пожалуйста, просветите меня, если у вас есть идеи.Спасибо, что я ожидаю, что смогу сделать, например, в основной функции, Proxy px (3);<- Я знаю, что это не работает, но я хочу использовать что-то подобное в любом случае.</p>

1 Ответ

0 голосов
/ 25 апреля 2018

Вы можете сделать это с помощью другой функции, которая обеспечивает необходимые биты при ее вызове.

int get_bits() {
    return 3;
}

Proxy *Proxy::getInstance() {
    static Proxy* instance = new Proxy(get_bits());
    return instance;
}

Или сделать это в одном Proxy конструкторе по умолчанию (лучше)

Proxy::Proxy():Generator(get_bits()) {
}
...