Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ > error C2614: 'C...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 2 Topic 43717 of 48044
Post > Topic >>

error C2614: 'CYYYRegister' : illegal member initialization:

by Angus <anguscomber@[EMAIL PROTECTED] > Mar 6, 2008 at 02:05 AM

Hello

I am trying to understand an issue which I know how to fix but don't
know why it works.

Getting this error:
error C2614: 'CYYYRegister' : illegal member initialization:
'CRequest' is not a base or member

Code is below.  If I change class CXXXRequest slightly as below:

class CXXXRequest : public virtual CRequest

Then the error goes away.

Why?  Why do I need the virtual keyword for compiler to realise that
CRequest is a base?


#include <string>
#include <iostream>


struct message_t
{
	long id;
	std::string strItem;
};

class TmMessage
{
public:
	TmMessage(message_t *_msg) : msg(_msg) {}
	message_t* GetMsg() const { return msg; }

protected:
	message_t* msg;
};

class CRequest : public TmMessage
{
public:
	CRequest::CRequest(int clientId, message_t *_msg)
  : TmMessage(_msg)
	{
		std::cout << "CRequest::CRequest(int clientId, message_t *_msg)" <<
std::endl;
	}
	void CRequest::Options(unsigned idx, ...)
	{
		std::cout << "CRequest::Options" << std::endl;
	}
};

class CXXXRequest : public /*virtual*/ CRequest
{
public:
	CXXXRequest::CXXXRequest(int clientId, message_t *msg)
		: CRequest(clientId, msg){}

	int CXXXRequest::Invoke()
	{
		std::cout << "CXXXRequest::Invoke" << std::endl;
		return 0;
	}
};

class CYYYRegister : public CXXXRequest
{
public:
  CYYYRegister(int clientId, message_t *msg) :
    CRequest(clientId, msg),
    CXXXRequest(clientId, msg)
	{
		std::cout << "CYYYRegister(int clientId, message_t *msg)" <<
std::endl;
	}
	int CYYYRegister::Invoke()
	{
		std::cout << "CYYYRegister::Invoke()" << std::endl;
	}
};



int main()
{
	int clientid = 1;

	message_t mymsg;
	mymsg.id = 7;
	mymsg.strItem = "msg item";
	CYYYRegister y(clientid, &mymsg);

	CXXXRequest x(clientid, &mymsg);

	message_t* pMsg = y.GetMsg();

	int ret = x.Invoke();


	return 0;
}
 




 2 Posts in Topic:
error C2614: 'CYYYRegister' : illegal member initialization:
Angus <anguscomber@[EM  2008-03-06 02:05:02 
Re: error C2614: 'CYYYRegister' : illegal member initialization:
lotussfly@[EMAIL PROTECTE  2008-03-06 03:38:36 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Oct 15 22:38:04 CDT 2008.