// --------------------------------------------------------
// Code generated by Papyrus C++
// --------------------------------------------------------

#define CppCodegenTest_Class3_BODY

/************************************************************
 Class3 class body
 ************************************************************/

// include associated header file
#include "CppCodegenTest/Class3.h"

// Derived includes directives

// static attributes (if any)

/**
 * Inherited method overriding.
 * @param a 
 * @param b 
 * @return  
 */
double Class3::virtualOp(double /*in*/a, double /*in*/b) {
	return a + b;
}

/**
 * Inherited virtual destructor
 */
Class3::~Class3() {
}

/**
 * Default constructor
 */
Class3::Class3() {
}

/************************************************************
 End of Class3 class body
 ************************************************************/
