新手有关问题!@简单关于的多态有关问题#[100分]#
新手问题!@简单关于的多态问题###[100分]######
#include "windows.h "
#include "tchar.h "
interface Base
{
public:
void Do();
};
class ChildA : Base
{
public:
void Do()
{
MessageBox(NULL, _T( "In ChildA Do. "), _T( "多态 "), MB_OK);
}
};
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Base* b = (Base*)new ChildA();
b-> Do();
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
这样也编译不过去?是不是c++接口也是要有实现的啊?
------------------------------------
Error 1 error LNK2001: unresolved external symbol "public: void __thiscall Base::Do(void) " (?Do@Base@@QAEXXZ)
------解决方案--------------------
#include "windows.h "
#include "tchar.h "
class Base
{
public:
virtual void Do()=0;
};
class ChildA : Base
{
public:
void Do()
{
MessageBox(NULL, _T( "In ChildA Do. "), _T( "多态 "), MB_OK);
}
};
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Base* b = (Base*)new ChildA();
b-> Do();
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
------解决方案--------------------
interface Base
{
public:
virtual void Do()=0;
};
------解决方案--------------------
需要实现
或者
interface Base
{
public:
virtual void Do()=0;需要virtual说明是虚函数 后面的=0;表示纯虚函数
};
你的程序也不对
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Base* b = new ChildA;
b-> Do();
return (int)msg.wParam;
}
------解决方案--------------------
C++里没有“interface”。只是VC搞了一个:
define interface class而已。
C++语言中,应该采用纯虚函数表达abstract,使用纯虚基类表达interface的思想。
------解决方案--------------------
楼主,希望你在看下书,怎么实现多态,什么叫覆盖,
#include "windows.h "
#include "tchar.h "
interface Base
{
public:
void Do();
};
class ChildA : Base
{
public:
void Do()
{
MessageBox(NULL, _T( "In ChildA Do. "), _T( "多态 "), MB_OK);
}
};
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Base* b = (Base*)new ChildA();
b-> Do();
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
这样也编译不过去?是不是c++接口也是要有实现的啊?
------------------------------------
Error 1 error LNK2001: unresolved external symbol "public: void __thiscall Base::Do(void) " (?Do@Base@@QAEXXZ)
------解决方案--------------------
#include "windows.h "
#include "tchar.h "
class Base
{
public:
virtual void Do()=0;
};
class ChildA : Base
{
public:
void Do()
{
MessageBox(NULL, _T( "In ChildA Do. "), _T( "多态 "), MB_OK);
}
};
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Base* b = (Base*)new ChildA();
b-> Do();
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
------解决方案--------------------
interface Base
{
public:
virtual void Do()=0;
};
------解决方案--------------------
需要实现
或者
interface Base
{
public:
virtual void Do()=0;需要virtual说明是虚函数 后面的=0;表示纯虚函数
};
你的程序也不对
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Base* b = new ChildA;
b-> Do();
return (int)msg.wParam;
}
------解决方案--------------------
C++里没有“interface”。只是VC搞了一个:
define interface class而已。
C++语言中,应该采用纯虚函数表达abstract,使用纯虚基类表达interface的思想。
------解决方案--------------------
楼主,希望你在看下书,怎么实现多态,什么叫覆盖,