一个C++ new常见问题,百分相送

YoungestCPSprogramer 2009-08-26 10:15:35
如何改下面程序
,讲讲原因
class A
{
public:
A(){}
void Say(){}
};
int main()
{
A* p = new A[2];
p[0]->Say();//此处出错
return 0;
}

错误代码
1>main.cpp
1>c:\documents and settings\administrator\桌面\mem\mem\main.cpp(15) : error C2819: “A”类型没有重载成员“operator ->”
1> c:\documents and settings\administrator\桌面\mem\mem\main.cpp(7) : 参见“A”的声明
1> 是否要改用“.”?
1>c:\documents and settings\administrator\桌面\mem\mem\main.cpp(15) : error C2232: “->A::Say”: 左操作数有“class”类型,使用“.”
...全文
67 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixiaoshashou 2009-08-27
  • 打赏
  • 举报
回复
忘记了还有一句。

A* p = new A[2];
p[0].say();
delete []p;
p=o;//避免迷途指针
tongxu1984 2009-08-26
  • 打赏
  • 举报
回复

class A
{
public:
A(){}
void Say(){}
};
int main()
{
A* p = new A[2];
p[0].Say();
return 0;
}
  • 打赏
  • 举报
回复
呵呵 我刚才傻帽了~
weixiaoshashou 2009-08-26
  • 打赏
  • 举报
回复

A* p = new A[2];
p[0].say();
delete []p;//避免迷途指针


mstlq 2009-08-26
  • 打赏
  • 举报
回复
既然p是A类指针
则p[0]代表一个A类对象^_^,所以请用
p[0].Say();

class A
{
public:
A(){}
void Say(){}
};
int main()
{
A* p = new A[2];
p[0].Say();//此处出错
return
vincent_1011 2009-08-26
  • 打赏
  • 举报
回复
2008?还挺智能,竟然还问要不要改成点
Sou2012 2009-08-26
  • 打赏
  • 举报
回复
int main() 
{
A* p = new A(); // A[] 表示数组 A() 为创建对象
p[0]->Say();
return 0;
}
wanjingwei 2009-08-26
  • 打赏
  • 举报
回复
p[0].Say();
p[0]只是对象,不是对象的指针

64,636

社区成员

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

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