如何在上课前创建对象
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
(就像您正在这样做一样)只让编译器知道存在指定名称的类;它不会告诉编译器有关类(例如大小)的任何内容,因此编译器直到在其类上的类别中解析后才能实例化该类型的对象。因此,您需要在他们的班级声明之后声明三个对象。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 错误:创建对象后无法分配区域
- C++ 通过输入创建对象
- 堆还是堆栈用于创建对象?
- 使用 C++ 创建对象数组
- 使用unique_ptr创建对象
- C++递归地在类构造函数中创建对象
- 通过向构造函数其他对象引用页面来创建对象
- ReactiveX (rx) - 在对象上应用可观察对象,而不是在可观察对象中创建对象
- 如何在OSX上正确创建C++对象文件(.o)
- 编译器是否会创建vtable,而不考虑在c++中创建对象
- 创建对象并防止被破坏
- 在C++中,友元类可以从友元类创建对象吗
- 只在堆中创建C++对象
- 创建用户定义的复制构造函数时无法创建对象