Original Post
class AbstractInfoString
{
public:
// LIFECYCLE
inline AbstractInfoString ();
inline virtual ~AbstractInfoString ();
// OPERATORS
friend std::ostream& operator<< (std::ostream& lStream,
AbstractInfoString& lInfoString);
// OPERATIONS
inline axpVoid Log ();
// ACCESS
// INQUIRY
virtual axpString InfoString () = 0;
// VARIABLES
protected:
// LIFECYCLE
// OPERATORS
// OPERATIONS
// ACCESS
// INQUIRY
// VARIABLES
private:
// LIFECYCLE
// OPERATORS
// OPERATIONS
// ACCESS
// INQUIRY
// VARIABLES
};
inline AbstractInfoString::AbstractInfoString()
{
}
inline AbstractInfoString::~AbstractInfoString()
{
}
//================= OPERATORS ===============================================
//================= OPERATIONS ==============================================
inline axpVoid AbstractInfoString::Log()
{
// do log
}
ostream& operator<< ( ostream& lStream, AbstractInfoString& lRight)
{
lStream << lRight.InfoString();
return(lStream);
}
class ConcreteMode:
public AbstractInfoString
{
public:
// LIFECYCLE
inline ConcreteMode ();
inline ConcreteMode (const axpUInt64&);
inline ConcreteMode (const ConcreteMode&);
inline virtual ~ConcreteMode ();
// OPERATORS
inline ConcreteMode& operator= (const ConcreteMode&);
// OPERATIONS
// ACCESS
inline axpVoid Mode (const axpUInt64&);
// INQUIRY
inline axpUInt64 Mode ();
inline axpBool IsMode (const axpUInt64&);
inline axpString InfoString ();
// VARIABLES
protected:
// LIFECYCLE
// OPERATORS
// OPERATIONS
// ACCESS
// INQUIRY
// VARIABLES
private:
// LIFECYCLE
// OPERATORS
// OPERATIONS
// ACCESS
// INQUIRY
// VARIABLES
axpUInt64 mMode;
};
//////////////////// PUBLIC /////////////////////////////////////////////////
//================= LIFECYCLE ===============================================
inline ConcreteMode::ConcreteMode():
AbstractInfoString()
{
mMode = 0;
}
inline ConcreteMode::ConcreteMode(const axpUInt64& lNewMode):
AbstractInfoString()
{
mMode = lNewMode;
}
inline ConcreteMode::ConcreteMode(const ConcreteMode& lRight):
AbstractInfoString()
{
if(&lRight != this)
{
mMode = lRight.mMode;
}
}
inline ConcreteMode::~ConcreteMode()
{
}
//================= OPERATORS ===============================================
inline ConcreteMode& ConcreteMode::operator=(const ConcreteMode& lRight)
{
if(&lRight != this)
{
mMode = lRight.mMode;
}
return(*this);
}
//================= OPERATIONS ==============================================
//================= ACCESS ==================================================
inline axpVoid ConcreteMode::Mode(const axpUInt64& lNewMode)
{
mMode = lNewMode;
}
//================= INQUIRY =================================================
inline axpUInt64 ConcreteMode::Mode()
{
return(mMode);
}
inline axpBool ConcreteMode::IsMode(const axpUInt64& lMode)
{
if(mMode == lMode)
return(axpTrue);
else
return(axpFalse);
}
inline axpString ConcreteMode::InfoString()
{
axpString lInfoString;
axpChar lBuffer[64];
sprintf(lBuffer,"%d",mMode);
lInfoString.append(lBuffer);
return(lInfoString);
}
/////////////////// PROTECTED ///////////////////////////////////////////////
//================= LIFECYCLE ===============================================
//================= OPERATORS ===============================================
//================= OPERATIONS ==============================================
//================= ACCESS ==================================================
//================= INQUIRY =================================================
/////////////////// PRIVATE /////////////////////////////////////////////////
//================= LIFECYCLE ===============================================
//================= OPERATORS ===============================================
//================= OPERATIONS ==============================================
//================= ACCESS ==================================================
//================= INQUIRY =================================================
//================= INQUIRY =================================================
in main:
ConcreteMode mode1;
cout << mode1; -> here i get linker error
error LNK2001: unresolved external symbol "class std::basic_ostream