c++ - 声明类类型的数组(Borland C++ 有问题)

标签 c++ class borland-c++

我有一个类,比方说

class XXX{
...
};

例如,我想声明该类对象的全局数组

XXX* arr = new XXX[50];

但是,例如,我在 xxx.h 文件(类的头文件)中声明:

extern XXX* arr;

在 xxx.cpp 文件中我这样做:

XXX* arr = new XXX[50];

但是,Borland C++ 给出了以下错误:

Cannot find default constructor to initialize array element of type 'XXX'

当我在 xxx.cpp 文件中声明以下内容时

XXX* arr[50];

我在其他 cpp 文件中收到一些错误消息,例如

Undefined symbol arr;

所以,总结一下,我该如何声明我的这个数组?

更新: 我有一个带有 3 个参数的构造函数,我不希望它们具有默认值。

此外,我在宏中“声明”了构造函数,如下所示:

#define PREP(num, c)\
    IVT ivt##num(evInt##num,num,c);\
    void interrupt evInt##num(...){\
    iv[##num]->signalize();\
 } 

因此,IVT ivt##num(evInt##num,num,c);是类 IVT 的构造函数,我想声明一个包含 X 个元素的全局指针数组。

最佳答案

Cannot find default constructor to initialize array element of type 'XXX'

意思是,您没有不接受任何参数的构造函数(即默认构造函数)。您是否在 XXX 类中定义了它?如果构造函数接受任何参数,则编译器不会提供默认构造函数。

XXX* arr = new XXX[50];

上述语句调用默认构造函数 50 次。顺便说一句,请给一个有意义的类名。这有点冒犯。

When i just declare the following in xxx.cpp file

如果您单独在.cpp 文件中声明,则该变量仅对当前翻译单元可见。您仍然需要在头文件中有 extern 声明,以便其他源对象文件能够链接到它。

关于c++ - 声明类类型的数组(Borland C++ 有问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166885/

相关文章:

c++ - 具有二维数组的类中的否定运算符重载

c++ - "Member function must be called or its address taken in function"C++错误

c - 需要适用于 Windows 7 64 位的 C 编译器,以编译为 DOS 目标

c++ - 编译时循环

java - 如何使用 main() 中的对象数组访问类私有(private)成员?

c++ - 整数到 bool 数组

C++在虚方法中访问公共(public)变量

c - 当我用 Borland C++ 构建这段代码时,为什么它不能正确定位光标?

c++ - 如何使用 typename 而不是 typedef?

c++ - C++ 构造函数的问题。这里究竟初始化了什么?