Re: passing this object
- From: David Wilkinson <no-reply@xxxxxxxxxxxx>
- Date: Thu, 27 Nov 2008 06:19:52 -0500
Jung, William wrote:
I would like to pass "this" object to a constructor of socket class -
Sock which extends CSocketComm.
Once the socket class processed the data, the socket class use the
reference of CVirtualScreen (this object) - screen.setMessage function
to pass back the message to CVirtualScreen.
Is the following a correct syntax of implementing it?
should I involve reference / pointer in this case?
Please advice the incorrect area of the following code.
===================
class CVirtualScreen {
public:
CVirtualScreen();
~CVirtualScreen();
Sock *sock;
}
===================
CVirtualScreen::CVirtualScreen() {
// QUESTION ///////////////////////////
// IS IT CORRECT WAY OF PASSING
// THIS OBJECT TO SOCKET CLASS??
// SHOULD I USE & REFERENCE??
// SHOULD I USE POINTER??
sock = new Sock(this);
}
// function must take std::string as parameter
CVirtualScreen::setMessage( std::string message ) {
//setMessage to queue
}
===================
class Sock : public CSocketComm
{
public:
Sock(CVirtualScreen screen);
~Sock();
// QUESTION ///////////////////////////
// DO I DECLARE REFERENCE TO CVirtuaqlScreen LIKE THIS WAY??
CVirtuaqlScreen screen;
virtual void OnDataReceived(const LPBYTE lpBuffer, DWORD dwCount);
bool StartServer();
};
===================
Sock::Sock(CVirtualScreen screen) {
// QUESTION ///////////////////////////
// CAN I SET REFERENCE TO CVirtualScreen LIKE THIS??
// SHOULD I USE POINTER??
screenObject = screen
StartServer();
}
Sock::~Sock() {
StopComm();
}
void Sock::OnDataReceived(const LPBYTE lpBuffer, DWORD dwCount)
{
// do some stuff and output the std::string object
std::string message = ... etc
// QUESTION ///////////////////////////
// ONCE SOCKET PROCESSED THE MESSAGE AND EXTRACT THE DATA
// SOCKET WILL PASS THE MESSAGE BACK TO CVirtualScreen TO
// INSERT MESSAGE INTO A MESSAGE QUEUE
// IS THE FOLLOWING COORECT SYNTAX TO PASS MESSAGE BACK TO // CVirtualScreen CLASS??
screen.setMessage ( message );
}
William:
A question like this can most easily be answered by trying to compile your code. Your code will generate a number of errors.
You should use a pointer member variable CVirtualScreen* in your Sock class, and pass your "this" object to it as a CVirtualScreen*.
I would advise you to get a much better grasp of C++ before you try to use it for socket programming.
--
David Wilkinson
Visual C++ MVP
.
- Follow-Ups:
- Re: passing this object
- From: Jung, William
- Re: passing this object
- From: Jung, William
- Re: passing this object
- From: Jung, William
- Re: passing this object
- From: Jung, William
- Re: passing this object
- From: Jung, William
- Re: passing this object
- References:
- passing this object
- From: Jung, William
- passing this object
- Prev by Date: Re: LoadUserProfile( ) fails with system error code 5(ACCESS_DENIED)
- Next by Date: Re: passing this object
- Previous by thread: passing this object
- Next by thread: Re: passing this object
- Index(es):
Relevant Pages
|