C++调试 错误error C2664 er ror C2440 求帮主
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++调试 错误error C2664 er ror C2440 求帮主相关的知识,希望对你有一定的参考价值。
WCHAR* WChar(char *string)
WORD *wchr;
//将后两个参数设置成NULL和0
//得到需要的缓冲区长度
int wsize=MultiByteToWideChar(CP_ACP, NULL, string, strlen(string), NULL, 0);
wchr=new WORD[wsize+1]; //多出一个放0
MultiByteToWideChar(CP_ACP, NULL, string, strlen(string), wchr, wsize);
wchr[wsize]=0;
return wchr;
8 error C2664: 'MultiByteToWideChar' : cannot convert parameter 5 from 'WORD *' to 'LPWSTR'
10 error C2440: 'return' : cannot convert from 'WORD *' to 'WCHAR *'
在编译时出现错误 咋改啊。。。是什么原因导致的 分不多 先谢谢大家了
10 error C2440: 'return' : cannot convert from 'WORD *' to 'WCHAR *应该是说WChar函数的返回值应该是WCHAR*类型,而你返回的wchr是WORD *类型。 参考技术B 第一个错,把第5个参数改成0试试。
第二个错,返回值的定义不一至,一个是WCHAR*,一个是WORD
WORD *wchr 把这个改为WCHAR* wchr本回答被提问者采纳
c++错误:error LNK2001
//空的虚函数到底有什么用?能否举例说明一下,谢谢了
//派生类并不一定必须实现基类中的虚函数,如果派生类想通过虚函数机制则必须建立一条从积累到派生类的虚函数路径。许多没有使用虚函数的中间类也必须声明该函数,以保证其后的派生类能使用该虚函数。这样的话,声明一个虚函数就可以达到其目的。
//例如:
#include <iostream.h>
class A
public:
virtual void printOn()cout<<"Class A"<<endl;
;
class B: public A
public:
void printOn()
;
class C: public B
public:
void printOn()cout<<"Class C"<<endl;
;
void Show(A*a)
a ->printOn();
void mian()
A *a = new A;
B *b = new B;
C *c = new C;
Show (a);
Show (b);
Show (c);
//通过上面简单的程序可以看出,虚函数B声明为空,它的意义在于,类B并不需要pringOn()函数,
//声明它是为了保证B的派生类能使用类A的虚函数界面,使调用show(c)能沿着从A对象的虚函数路径正确存取C::printOn()虚函数。
结果出现错误:
--------------------Configuration: Ex_VirtualFunc - Win32 Debug--------------------
Compiling...
1.cpp
Linking...
LIBCMTD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Ex_VirtualFunc.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Ex_VirtualFunc.exe - 2 error(s), 0 warning(s)
重点问题:我觉得虚函数实现多态性没多大意义啊!
这样做还要先定义几个指向基类的指针,还要再给它们赋值各个子类对象的地址。
还不如我直接定义每个子类的对象,再用该对象直接调用各个子类???
虚函数的作用是允许在派生类中对积累的虚函数重新定义,即在同一类族中对同一消息做出不同的响应。
原来的程序若不用虚函数相当于:
A *a = new A;
a ->printOn();
B *b = new B;
b ->printOn();
C *c = new C;
c ->printOn();
用虚函数可简化为:
A *a = new A;
a ->printOn();
a = new B;
a ->printOn();
a = new C;
a ->printOn();
少申请了两个指针。 参考技术A 小农不才~~ 请你在新建工程的 时候先把Win32 Applicatioan 换成
Win32 Console Applicatioan 然后再看看~~~
以上是关于C++调试 错误error C2664 er ror C2440 求帮主的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL 中的错误 C2664 和 C2597 以及 C++ 中的 DevIL
error C2664: “CreateFileW”: 不能将参数 1 从“char *”转换为“LPCWSTR”
error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 无法将参数 1 从“const char [9]”转换为“LPCTSTR”
VS2012 error C2664: “std::make_pair”:无法将左值绑定到右值引用
求助:error C2664: “CreateWindowExW”: 不能将参数 3 从“const char [8]”转换为“LPCWSTR”
error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”