视觉C++ 2 重载具有类似的转换 - 游戏项目
visual C++ 2 Overloads have similar Conversions- Game Project
错误:
Source_InterfaceWndTaskBar.cpp(9681) : error C2666: 'CTexture::RenderRotate' : 2 overloads have similar conversions
Source_Common2DRender.h(245): could be 'void CTexture::RenderRotate(C2DRender *,CPoint,FLOAT,BOOL,DWORD,FLOAT,FLOAT)'
Source_Common2DRender.h(240): or 'void CTexture::RenderRotate(C2DRender *,CPoint,FLOAT,DWORD,FLOAT,FLOAT)'
while trying to match the argument list '(C2DRender *, CPoint, float, int, float, float)'
SourceSource_InterfaceWndTaskBar.cpp(9682) : error C2666: 'CTexture::RenderRotate' : 2 overloads have similar conversions
Source_Common2DRender.h(245): could be 'void CTexture::RenderRotate(C2DRender *,CPoint,FLOAT,BOOL,DWORD,FLOAT,FLOAT)'
Source_Common2DRender.h(240): or 'void CTexture::RenderRotate(C2DRender *,CPoint,FLOAT,DWORD,FLOAT,FLOAT)'
while trying to match the argument list '(C2DRender *, CPoint, float, int, float, float)'
Wnd任务栏.cpp
9679 if( ( m_nActionSlot > 0 )&&( g_WndMng.m_pWndTaskBar->m_nExecute > 0 ))
9680 {
9681 SlotRt2->RenderRotate( p2DRender, CPoint(0,0), RotateSLOT, 255, 1.0f, 1.0f );
9682 SlotEffect2->RenderRotate( p2DRender, CPoint(0,0), RotateSLOT, m_nFlashAlpha[0], 1.0f, 1.0f );
9683 }
9684 else
9685 {
9686 SlotRt2->Render( p2DRender, CPoint(0,0), 255 );
9687 SlotEffect2->Render( p2DRender, CPoint(0,0), 0);
9688 }
2DRender.h ( 其他几行 )
227 //BOOL LoadTextureFromRes( LPDIRECT3DDEVICE9 pd3dDevice, LPCTSTR pFileName, D3DCOLOR d3dKeyColor, BOOL bMyLoader = FALSE );
228 void Render( C2DRender* p2DRender, CPoint pt, DWORD dwBlendFactorAlhpa = 255 ) {
229 p2DRender->RenderTexture( pt, this, dwBlendFactorAlhpa );
230 }
231 void Render( C2DRender* p2DRender, CPoint pt, CPoint pt2, DWORD dwBlendFactorAlhpa = 255, FLOAT fscalX = 1.0, FLOAT fscalY = 1.0 ) {
232 p2DRender->RenderTextureEx( pt, pt2, this, dwBlendFactorAlhpa, fscalX, fscalY );
233 }
234 void RenderEx2( C2DRender* p2DRender, CPoint pt, CPoint pt2, DWORD dwBlendFactorAlhpa = 255, FLOAT fscalX = 1.0, FLOAT fscalY = 1.0, D3DCOLOR color = 0 ) {
235 p2DRender->RenderTextureEx2( pt, pt2, this, dwBlendFactorAlhpa, fscalX, fscalY, color );
236 }
237 void RenderScal( C2DRender* p2DRender, CPoint pt, DWORD dwBlendFactorAlhpa = 255, FLOAT fscalX = 1.0, FLOAT fscalY = 1.0 ) {
238 p2DRender->RenderTexture( pt, this, dwBlendFactorAlhpa , fscalX, fscalY );
239 }
240 void RenderRotate( C2DRender* p2DRender, CPoint pt, FLOAT fRadian, DWORD dwBlendFactorAlhpa = 255, FLOAT fscalX = 1.0, FLOAT fscalY = 1.0 ) {
241 p2DRender->RenderTextureRotate( pt, this, dwBlendFactorAlhpa , fscalX, fscalY, fRadian );
242 }
243
244 //added by gmpbigsun : ȸÀüÃà º¯°æ°¡´É ( center or start point )
245 void RenderRotate( C2DRender* p2DRender, CPoint pt, FLOAT fRadian, BOOL bCenter, DWORD dwBlendFactorAlhpa = 255, FLOAT fscalX = 1.0, FLOAT fscalY = 1.0 ) {
246 p2DRender->RenderTextureRotate( pt, this, dwBlendFactorAlhpa, fRadian, bCenter, fscalX, fscalY );
247 }
248
249 void Render2( C2DRender* p2DRender, CPoint pt, D3DCOLOR color, float fscalX = 1.0f, float fscalY = 1.0f ) {
250 p2DRender->RenderTexture2( pt, this, fscalX, fscalY, color );
251 }
252 void RenderScal2( C2DRender* p2DRender, CPoint pt, DWORD dwBlendFactorAlhpa = 255, FLOAT fscalX = 1.0, FLOAT fscalY = 1.0, D3DCOLOR color = 0 ) {
253 p2DRender->RenderTextureColor( pt, this, fscalX, fscalY, color );
254 }
所以我真的很陌生C++我知道一些基础知识,我试图通过这个预建项目的反复试验来学习,不是最好的学习方式,但它会教我足够的东西来达到我需要的东西。
据我了解,有两种不同的转换,编译器不知道使用这两个定义中的哪一个,对吧?
编译器
说当你调用函数时,参数列表是(C2DRender *, CPoint, float, int, float, float)
。但是通话没有完全匹配。
有两个候选人,
void CTexture::RenderRotate(C2DRender *,CPoint,FLOAT,BOOL,DWORD,FLOAT,FLOAT)
和 void CTexture::RenderRotate(C2DRender *,CPoint,FLOAT,DWORD,FLOAT,FLOAT)
您可以说,int
可以转换为BOOL
或DWORD
以匹配其中一个候选者,但编译器认为两者同样好。所以它不能决定并要求您澄清。
查看此行中的代码:
SourceSource_InterfaceWndTaskBar.cpp(9682) : error C2666: 'CTexture::RenderRotate' : 2 overloads have similar conversions
并仔细查看参数的类型。编译器说他们的计算结果为
C2DRender *, CPoint, float, int, float, float
您有两个非常相似的函数指纹,它们都不完全匹配,但都可以通过一些转换来获取您提供的参数。
由于参数计数不同,我怀疑您已经体验了为什么不使用默认参数的第一课。
C2DRender *,CPoint,FLOAT,BOOL,DWORD,FLOAT,FLOAT
C2DRender *,CPoint,FLOAT, DWORD,FLOAT,FLOAT
编译器可以将"int"转换为BOOL和DWORD,如果一个或两个函数中的浮点数具有默认值,则可以充实其余部分。
您可以通过准确指定您尝试调用的内容来修复它:
RenderRotate(renderer, point, float1, (BOOL)theBoolValue, (DWORD)theDwordValue, float2, float3);
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 我无法将'2D array whit bool'转换为"空 2D 数组布尔值"(用于生命游戏)
- 游戏引擎:如何从结构:编码实践转换变量
- 如何更新游戏中的INT转换
- main.cpp|15|错误:从 'const char*' 到 'char' 的转换无效 [-允许]|制作游戏时出错
- 为什么我们需要维护自己的矩阵来转换游戏对象
- 视觉C++ 2 重载具有类似的转换 - 游戏项目
- 每次场景转换发生时,Cocos 2dx游戏的内存都会增加
- 将屏幕坐标转换为游戏坐标
- 将其他语言(如c++等)开发的游戏转换/移植到iphone的最佳方式
- 如何在使用glm::ortho的2d游戏中将像素坐标转换为opengl坐标
- 将游戏手柄操纵杆值转换为范围
- (c++,Qt,Linux)将游戏地图线转换为图像线