私は現在C++を学んでいますが、今回はポインターをいじり、this
ポインターとポリモーフィズムを研究していました。私の質問は、以下の変換は安全ですか、基本的には「公開」のためにクラスからm_uConnectedUsers
直接アクセスできることを知っていCUser
ますが、それが必要になる場合があります。あなたの専門家の意見を知りたいです。それ。
#include <windows.h>
#include <iostream>
using namespace std;
class CUserCounter
{
public:
CUserCounter();
virtual ~CUserCounter(){};
BOOL m_bEmpty;
u_long m_uConnectedUsers;
};
CUserCounter::CUserCounter()
{
m_bEmpty = TRUE;
m_uConnectedUsers = 0;
}
class CUser : public CUserCounter
{
public:
CUser(LPCTSTR szName, BOOL bConnected, BOOL bChatting = FALSE );
virtual ~CUser(){};
BOOL m_bConnected;
BOOL m_bIsChatting;
TCHAR szCharName[32];
bool IncreaseMoverMeter( unsigned uMeters );
};
CUser::CUser( LPCTSTR szName, BOOL bConnected, BOOL bChatting )
{
if( szName )
{
if( strlen( szName ) > 30 )
strcpy( szCharName, "Invalid" );
else
strcpy( szCharName, szName );
}
m_bConnected = bConnected;
m_bIsChatting = bChatting;
}
bool CUser::IncreaseMoverMeter( unsigned uMeters )
{
//is it safe? how does it works
CUserCounter* pUserCounter = (CUserCounter*)this;
if( pUserCounter )
{
pUserCounter->m_uConnectedUsers++;
return true;
}
return false;
}
int main( int argc, char *argv[] )
{
CUser *pUser = new CUser( "Jonh", FALSE );
std::cout << pUser->IncreaseMoverMeter( 4 );
system("pause>nul");
return EXIT_SUCCESS;
}