我都查了2天了,还是不知道问题出在那??

ren20 2001-03-25 06:19:00
class CMaps : public CObject
{
public:
int GetPathNum() //得到数组指针的成员数量
{
if(m_PathArray)
return m_PathArray.GetSize();
else
return 0;
};

virtual void Serialize(CArchive& ar);

DECLARE_SERIAL(CMaps)

CMaps(UINT id,CString name,CString mComment="");
CMaps();
virtual ~CMaps();

CTypedPtrArray <CObArray,CPath*> m_PathArray;

};

如果getpathnum() 作成内联函数,如上,编译就出现:
error C2451: conditional expression of type 'class CTypedPtrArray<class CObArray,class CPath *>' is illegal
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Error executing cl.exe.

如果,不设为内联,就可以通过,这是为什么??
我简化了程序, cpath 也是一个类。

请帮助
...全文
176 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ren20 2001-03-25
  • 打赏
  • 举报
回复
to joke100:
请说的详细点!谢谢
ren20 2001-03-25
  • 打赏
  • 举报
回复
我已经把#include <afxtempl.h> 加入了
lms 2001-03-25
  • 打赏
  • 举报
回复
error C2451 是指该类型没有没有可以把该类型转化为bool型的算符
根据逻辑,直接返回m_PathArray.GetSize()就可以了,
类定义中是一CTypedPtrArray<class CObArray,class CPath *>类型的变量,不是指针
我想你可能原来想做== NULL or != NULL的测试吧
zero100 2001-03-25
  • 打赏
  • 举报
回复
将#include <afxtempl.h>放到头文件里面试试吧
panda_w 2001-03-25
  • 打赏
  • 举报
回复
通常出现这样的错误是因为没有包含#include <afxtempl.h>所致,不知道你的程序是不是因为这个原因
fd 2001-03-25
  • 打赏
  • 举报
回复
我用猜的,是不是变量引用的问题,你把那个函数放到 CTypedPtrArray<...后面试试
joke100 2001-03-25
  • 打赏
  • 举报
回复
m_PathArray是由模板类定义的。
原因要从模板类说起。。。

在C++编程思想一书中有这样的描述:
模板定义很特殊。由之处理的任何东西都意味着编译器在当时不为它分配存储空间,它一直处于等待状态直到被一个模板实例告知。
内联的时候就意味着m_PathArray没有被分配存储,所以不能用。。。


16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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