调用DLL中一个结构体的重载运算出错问题

yiyezhiqiu 2005-01-26 01:52:58
/ CPlus.h: interface for the CPlus class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CPLUS_H__A672497A_CD6F_477A_A041_B8ECFD0B73B7__INCLUDED_)
#define AFX_CPLUS_H__A672497A_CD6F_477A_A041_B8ECFD0B73B7__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
struct AFX_EXT_DATA MyStruct{
int x;
int y;
public :
friend BOOL operator==( const MyStruct& c,const MyStruct& d);
};
class AFX_EXT_CLASS CPlus
{
public:
CPlus();
virtual ~CPlus();
double x,y;
public:
int Add(int nNum1, int nNum2);
BOOL EqualStruct(MyStruct struct1,MyStruct struct2);
MyStruct ReturnStruct(MyStruct struct1);


};

#endif
***************************************************************
// CPlus.cpp: implementation of the CPlus class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CPlus.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPlus::CPlus()
{
}

CPlus::~CPlus()
{
}

int CPlus::Add(int nNum1, int nNum2)
{
return nNum1+nNum2;
}

BOOL CPlus::EqualStruct(MyStruct struct1,MyStruct struct2)
{

if(struct1==struct2)
return TRUE;
else
return FALSE;
}

MyStruct CPlus::ReturnStruct(MyStruct struct1)
{
return struct1;
}
BOOL operator ==(const MyStruct& c,const MyStruct& d)
{
if(
(c.x==d.x)&&(c.y==d.y)
)
{
return TRUE;
}
else
{
return FALSE;
}
}
问:我在另一个VC应用程序里面掉用CPlus的函数都可以,但是调用MyStruct的重载==运算就报错
代码如下
MyStruct struct1;
MyStruct struct2;
struct2.x=10;
struct2.y=10;
struct1.x=10;
struct1.y=10;
if(struct1==struct2){};
出错提示error LNK2001: unresolved external symbol "int __cdecl operator==(struct MyStruct const &,struct MyStruct const &)" (??8@YAHABUMyStruct@@0@Z)
c:\test\CPlusTest.exe : fatal error LNK1120: 1 unresolved externals

求高手帮忙看一下
...全文
52 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengwujun 2005-01-28
  • 打赏
  • 举报
回复
mark
yiyezhiqiu 2005-01-28
  • 打赏
  • 举报
回复
问题已经解决,当不是出在各位所说的地方!
oyljerry 2005-01-28
  • 打赏
  • 举报
回复
operator定义成const了,用的时候也需要const类型
把const去掉
DentistryDoctor 2005-01-26
  • 打赏
  • 举报
回复
方法一:再写一个非cosnt的operator==
方法二:operator==写成成员函数
struct AFX_EXT_DATA MyStruct{
int x;
int y;
public :
bool operator==( const MyStruct& rhs)
{
return x==rhs.x && y==rhs.y;
}
};
UDX协议 2005-01-26
  • 打赏
  • 举报
回复
把const去掉

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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