Задать вопрос
@014

Почему ошибка при выполнении sizeof()?

При компиляции ругается на функцию int size():
error: invalid application of 'sizeof' to incomplete type 'test1'
return sizeof(test1);
^
class test1;
class test
{
private:
    int i;
    char str[20];
public:
    int size()
{
    return sizeof(test1);
}

};
class test1: public test
{
public:
    int testq()
    {
      return sizeof(test);
    }
};


но если размещаю эту функцию вне самого класса (int test::size()) то все нормально.
  • Вопрос задан
  • 778 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Все честно - на момент обращения к sizeof компилятор не располагает полным объявлением класса test1.

В C++ в теле класса следует располагать только шаблоны.

**про inline-функции** - inline - это только *совет компилятору*, а не команда "засунь тело функции на место вызова"
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Потому что sizeof(test1) используется до определения класса test1.
если размещаю эту функцию вне самого класса (int test::size()) то все нормально

А попробуй разместить её выше определения class test1.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы