Я смотрел на этот поток по реализации синглтон-класса, но не ясно, как его использовать на практике.Чтобы сделать контекст более конкретным, скажем, у меня есть экземпляр входного потока std::istream
, к которому нужно обращаться многим различным классам, но вместо того, чтобы передавать его для каждого конструктора класса, я подумываю использовать одноэлементный класс Connection
для обертыванияИнформация.Поэтому клиент может просто позвонить:
Connection.getInstance().get_input_stream();
У меня два вопроса: (1) это правильное использование синглтон-класса (2) для реализации этого, я пробовал что-то вроде этого:
class Connection {
public:
static Connection& getInstance() {
static Connection instance; // Guaranteed to be destroyed
return instance;
}
std::istream& get_istream() {
return is;
}
void set_istream(std::istream & stream) {
is = stream;
}
private:
std::istream& is;
}
Сначала этот код по какой-то причине не компилируется.Во-вторых, неудобно, что вам нужно позвонить set_istream()
, прежде чем его можно будет использовать.Есть ли лучший способ сделать это?Спасибо.
РЕДАКТИРОВАТЬ: Судя по всему, пытаться назначить ссылку является моей глупостью, как многие из вас указали.Вторая часть состоит в том, как передать stream
информацию в синглтон - кажется, это не стоит того, что говорит о том, что это может быть неправильным вариантом для ее использования.Спасибо всем за ответы.