如何在上课前创建对象

How to create objects before class?

本文关键字:创建对象      更新时间:2023-10-16

我知道我们在声明。

之前无法用户使用变量或对象

在下面有三个类,为了使用这些类,我制作了三个对象(在类之前),我想我是否会编写类名称;它会起作用,但给出错误!

我已经在堆栈上搜索过与此相关的,但我没有澄清。

为什么我会出现错误&如何删除它?

#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};

简单的答案是您不能 - 声明forward declaration(就像您正在这样做一样)只让编译器知道存在指定名称的类;它不会告诉编译器有关类(例如大小)的任何内容,因此编译器直到在其类上的类别中解析后才能实例化该类型的对象。因此,您需要在他们的班级声明之后声明三个对象