почему нельзя создать объект const пустого класса - PullRequest
11 голосов
/ 17 марта 2011
#include <iostream>

class A {
   public:
      void foo() const {
          std::cout << "const version of foo" << std::endl;
      }
      void foo() {
          std::cout << "none const version of foo" << std::endl;
      }
};

int main()
{
  A a;
  const A ac;
  a.foo();
  ac.foo();
}

Приведенный выше код не может быть скомпилирован, кто-нибудь из вас может сказать мне почему?

Ответы [ 2 ]

13 голосов
/ 17 марта 2011

Вам нужно инициализировать его. Это известная проблема со спецификацией .

4 голосов
/ 17 марта 2011

Инициализируйте его как:

const A ac = A();

Рабочий код: http://www.ideone.com/SYPO9


Кстати, это не Инициализация: const A ac(); //deceptive - not an initializaiton!

...