C++ (Qt)// "универсальный" элементclass CReference { int mTypeID; // идентификатор типа (никуда не денешься) union { int mInt; float mFloat double mDoub; void * mPtr; // что-то выше травы }; bool SameType( const CReference & ) const; template <class T> void Get( T & val ) const; // и еще много-много чего, такие классы обычно имеют сотни членов};
C++ (Qt)template <class T, int kRow, int kCol>class CMatrix {public: CMatrix( void ) : M(mData), mRow(kRow), mCol(kCol) {} ~CMatrix( void ) { if (M != mData) delete [] M; } T * operator [] ( int index ) { return M + index * mCol; } const T * operator [] ( int index ) const { return M + index * mCol; } bool IsStatic ( void ) const { return M == mData; } bool IsDynamic ( void ) const { return M != mData; } void Resize( int row, int col, bool keepContent = false ) { T * newM = new T[row * col]; if (keepContent) { //.. copy } if (M != mData) delete [] M; M = newM; mRow = row; mCol = col; } private: T * M; int mRow, mCol; T mData[kRow * kCol];};
C++ (Qt)Matrix<double> matrix(Rows, Columns);