//MyClass.h
#pragma once
#ifndef MYCLASS_H
#define MYCLASS_H
#include <iostream>
#include <memory>
class NeptuneScene;
class NeptuneElem;
class NeptuneTrack;
class YouClass
{
public:
YouClass() {}
void Printing(const std::string& str)
{
std::cout << str.c_str() << std::endl;
}
};
template<typename C, typename U>
class MyClass
{
public:
MyClass();
U const& Max(const C& a, const U& b);
template<typename T>
void Printg(const std::string& a, const T& b);
protected:
private:
};
class He
{
public:
He();
template<typename H>
void tempHe(const std::string& path,const H& type);
private:
NeptuneScene* ms_pNeptuneScene;
NeptuneElem* ms_pNeptuneElem;
NeptuneTrack* ms_pNeptuneTrack;
};
/*
template<>
class MyClass<int, double>
{
public:
MyClass() {}
double const& Max(const int& a, const double& b)
{
return a < b ? b : a;
}
private:
};
*/
#endif //MYCLASS_H
//MyClass.cpp
#include "MyClass.h"
#include "../neptune.pb.h"
#pragma comment(lib,"libprotobufd.lib")
#pragma comment(lib,"libprotocd.lib")
using namespace std;
template<typename C,typename U>
MyClass<C,U>::MyClass()
{
//std::cout << "My Class Create." << std::endl;
}
template<typename C, typename U>
U const& MyClass<C,U>::Max(const C& a, const U& b)
{
return a < b ? b : a;
}
template<typename C, typename U>
template<typename T>
void MyClass<C, U>::Printg(const std::string& a, const T& b)
{
if (typeid(*b) == typeid(YouClass))
{
cout << "this is You Class" << endl;
}
else {
cout << "not id" << endl;
}
b->Printing(a);
}
He::He()
{
std::cout << "this He create" << std::endl;
ms_pNeptuneScene = new NeptuneScene;
ms_pNeptuneElem = new NeptuneElem;
ms_pNeptuneTrack = new NeptuneTrack;
}
template<typename H>
void He::tempHe(const string& path,const H& type)
{
cout << path.c_str() << endl;
cout << typeid(type).name() << endl;
ms_pNeptuneScene->set_name("hello NeptuneScene.");
cout << ms_pNeptuneScene->name() << endl;
}
//template class MyClass<int,int>;