关于default constructor

sigmod 2006-10-17 08:50:05
我明明写了Grid类的default constructor,可是编译器就是说没有,
而且 Grid g(); 可以通过
但 Grid*g = new Grid[10]; 却通不过编译,说: error C2512: 'Grid' no appropriate default constructor available

哪位大侠知道是为什么啊?
...全文
490 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
sigmod 2006-10-17
  • 打赏
  • 举报
回复
是include的问题,谢谢各位!
lann64 2006-10-17
  • 打赏
  • 举报
回复
lz可能出了其他差错,没写#include,拼写错误什么的。
lann64 2006-10-17
  • 打赏
  • 举报
回复
mingw-gcc-3.4.2
晨星 2006-10-17
  • 打赏
  • 举报
回复
结论:还是楼主所用的编译器更有个性。^_^
楼主还是公布一下吧。
晨星 2006-10-17
  • 打赏
  • 举报
回复
哦,GNU g++3.3也顺利通过了。-_-
lann64 2006-10-17
  • 打赏
  • 举报
回复
确实如此,MinGw developer studio
飞哥 2006-10-17
  • 打赏
  • 举报
回复
steedhorse(晨星) ( 三星(高级)) 信誉:143 2006-10-17 21:15:00 得分:0
?
打错了,“不根本需要”-》“根本不需要”。-_—
--------------
呵呵
前面那句好,一样的
:)
飞哥 2006-10-17
  • 打赏
  • 举报
回复
这个有错吗?
我的也通过了
WINDOWS XP SP2 + VC 6.0 +SP6 +STLport
晨星 2006-10-17
  • 打赏
  • 举报
回复
我用的是VC2003
晨星 2006-10-17
  • 打赏
  • 举报
回复
打错了,“不根本需要”-》“根本不需要”。-_-
晨星 2006-10-17
  • 打赏
  • 举报
回复
啊?不会吧?这么智能啊?
“new Grid[10]”,难道它分析出构造函数没有异常,所以不根本需要有析构函数吗?
lann64 2006-10-17
  • 打赏
  • 举报
回复
我加了delete[] p才报没定义析构函数错。
lann64 2006-10-17
  • 打赏
  • 举报
回复
wu~~~~我的编译器根本就不报错。通过了。
晨星 2006-10-17
  • 打赏
  • 举报
回复
怎么会“'Grid' no appropriate default constructor available”?
定义Grid类的头文件包含了么?
晨星 2006-10-17
  • 打赏
  • 举报
回复
我的编译器报出的错误不是没有定义构造函数,而是没有定义析构函数(只有声明,没有定义)。
lann64 2006-10-17
  • 打赏
  • 举报
回复
楼上的大哥:怎么定义一个“默认”构造函数?
默认?定义?
仔细斟酌一下!
==============
唉,c++primer就是这么翻译的。default constructor被翻译成默认构造函数。
synthesized default constructor被翻译成合成的默认构造函数。好在大家都懂在说什么。
晨星 2006-10-17
  • 打赏
  • 举报
回复
TO:qinhaichao(海潮)

这个不矛盾吧,“默认”构造函数,就是指无参构造函数(或者所有参数都有默认值亦可)。
它既可以是编译时隐式自动合成的,也可以是手工显式定义出来的。
sigmod 2006-10-17
  • 打赏
  • 举报
回复
#ifndef Grid_H
#define Grid_H

// Density Map for a number of subspaces
class Grid
{
public:
Grid(){}
Grid(int* dimensions, double* low, double* high, int dimensionaitly);
~Grid();
void setGrid(int* dimensions, double* low, double* high, int dimensionaitly);
Grid* merge(Grid* other);
private:
int dim_number; // no of dimensions in this subspace
int* dimensions; // all the dimension IDs sorted ascendently
double* low; // all lower bounds of all dimensions
double* high; // all upper bounds of all dimensions
};

#endif


.....
Grid* g = new Grid[num_of_grid];


qinhaichao 2006-10-17
  • 打赏
  • 举报
回复
楼上的大哥:怎么定义一个“默认”构造函数?
默认?定义?
仔细斟酌一下!
lann64 2006-10-17
  • 打赏
  • 举报
回复
那应该Grid g;编译也通不过吧。还是没定义默认构造函数。
加载更多回复(2)

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧