почему эта программа на C ++ использует конструктор и деструктор, показывая ошибку? - PullRequest
1 голос
/ 05 сентября 2011

Следующая программа показывает ошибку:

#include<conio.h>
#include<iostream.h>
int count = 0;
class alpha
   {
   public:

   alpha()
         {
         count++;
         cout<<"\n Number of objects created "<<count; 
         }
  ~alpha()
         {
         cout<<"\n Number of object destroyed"<<count;
         count--;
         }
  };

int main
{
    cout<<" inside main ";
    alpha a1, a2, a3, a4;
    {
        cout<<"\n Block 1 ";
        alpha A5;
    }
    {
        cout<<"\n Block 2 ";
        alpha a6;
    }
    cout<<" main again ";
    return 0;
}

Строка 11: ошибка: ссылка на 'count' является неоднозначной компиляцией, завершенной из-за -Wfatal-ошибок.

Ответы [ 3 ]

9 голосов
/ 05 сентября 2011

В стандартном C ++ заголовок <iostream.h> отсутствует. Используйте заголовок <iostream>, который имеет имена в std пространстве имен, таким образом не загрязняя глобальное пространство имен именами count. Не забывайте использовать std::cin, std::cout и т. Д. С этого момента.

Если ваш компилятор не распознает <iostream>, выбросьте его и получите новый. Visual Studio Express , например, бесплатный и простой в использовании, хотя на данный момент он не очень совместим со стандартами, но это не должно быть большой проблемой для вас.

5 голосов
/ 05 сентября 2011

У вас есть несколько проблем с вашим кодом:

  1. Вам не нужно conio.h
  2. Нет такого заголовка, как iostream.h, это просто iostream
  3. Вы пропускаете () после слова main
  4. Вы используете cout, endl и т. Д., Когда они не находятся в пространстве имен, в котором вы работаете.

После исправления всех ошибок вы получите что-то вроде этого:

#include<iostream>

using namespace std;

int count = 0;

class alpha
   {
public:
alpha()
       {
       count++;
       cout<<"\n Number of objects created "<<count; 
       }
~alpha()
       {
       cout<<"\n Number of object destroyed"<<count;
       count--;
       }
};

int main()
    {
    cout<<" inside main ";
    alpha a1, a2, a3, a4;
        {
        cout<<"\n Block 1 ";
        alpha A5;
        }
        {
        cout<<"\n Block 2 ";
        alpha a6;
        }
    cout<<" main again ";
    return 0;
}
0 голосов
/ 05 сентября 2011

Попробуйте немного изменить имя переменной count. Я думаю, что "count" может иметь особое значение в потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...