Как мне правильно назначить cout статической ссылочной переменной ostream?

Я определяю класс следующим образом:

class StaticRuntimeContext {
 public:
  enum Verbosity {
    kHIGH,
    kMEDIUM,
    kLOW,
    kSILENT
  };
  static void Construct();
  static std::ostream& stdout1() {return stdout1_;}
  static std::ostream& stdout2() {return stdout2_;}
  static std::ostream& stdout3() {return stdout3_;}
  static std::ostream& stderr() {return stderr_;}
 protected:
 private:
  static std::ostream& stdout1_;
  static std::ostream& stdout2_;
  static std::ostream& stdout3_;
  static std::ostream& stderr_;
};

Я определяю функцию построения как:

void StaticRuntimeContext::Construct() {
  std::ostream& test = cout;
  stdout1_ = cout;
  stdout2_ = cout;
  //stdout3_ = NULL;
  stderr_ = cerr;
}

Я не могу понять, почему назначение cout для тестирования (std :: ostream &) является Хорошо для компиляции, но компилятор выдает сообщения об ошибках для остальных, например "stdout1_ = cout". Сообщение об ошибке:

/usr/lib/gcc/x86_64-redhat-linux/4.6.2/../../../../include/c++/4.6.2/bits/ios_base.h:791:5: error: ‘std::ios_base& std::ios_base::operator=(const std::ios_base&)’ is private

Мне интересно, что мне делать, чтобы правильно назначить cout этим ссылочным переменным ostream. Спасибо!

5
задан derekhh 9 November 2011 в 21:08
поделиться