Я знаю, что мы не можем использовать переменную или объект перед объявлением.
Ниже представлены три класса, и для использования этого класса я создал три объекта (перед классом), и я подумал, что еслинаписать имя класса;это будет работать, но выдает ошибку!
Я выполнил поиск, связанный с этим в стеке, но я не получил разъяснения.
Почему я получаю ошибку и как ее устранить?
#include<iostream>
using namespace std;
class Bit;
class Nibble;
class Byte;
Bit bito; //Object for Bit
Nibble no; //Object for Nibble
Byte byteo; //Object for Byte
class Bit
{
public:
static int count;
static int bit[100000];
void add()
{
bit[count++]=2;
}
void check()
{
int k=0;
if(count)
{
for(int i=0;i<count;i++)
{
if(--bit[i]==0)
{
no.add();
k++;
}
}
int n=k;
int i=0;
while(n-->0)
{
bit[i]=bit[i+1];
i++;
}
count-=k;
}
}
};
int Bit::count=0;
int Bit::bit[100000]={0};
bito.add();
class Nibble
{
public:
static int count;
static int nibble[100000];
void add()
{
nibble[count++]=8;
}
void check()
{
int k=0;
if(count)
{
for(int i=0;i<count;i++)
{
if(--nibble[i]==0)
{
byteo.add();
k++;
}
}
int n=k;
int i=0;
while(n-->0)
{
nibble[i]=nibble[i+1];
i++;
}
count-=k;
}
}
};
int Nibble::nibble[100000]={0};
int Nibble::count=0;
class Byte
{
public:
static int count;
static int byte[100000];
void add()
{
byte[count++]=16;
}
void check()
{
int k=0;
if(count)
{
for(int i=0;i<count;i++)
{
if(--byte[i]==0)
{
bito.add();
bito.add();
k++;
}
}
int n=k;
int i=0;
while(n-->0)
{
byte[i]=byte[i+1];
i++;
}
count-=k;
}
}
};
int Byte::count=0;
int Byte::byte[100000]={0};