Difference between revisions of "CPP/Templates/PartialClassSpecialization"

From ProgrammingExamples
< CPP
Jump to: navigation, search
(Created page with '==PartialClassSpecialization.cpp== <source lang="cpp"> #include <iostream> #include "Point.h" int main() { Point<int, int, double> a; Point<int, int*, 5> b; a.functio…')
 
m (Point.h)
Line 34: Line 34:
 
{
 
{
 
   void function1();
 
   void function1();
  void function2();
 
 
};
 
};
  

Revision as of 08:37, 6 April 2011

PartialClassSpecialization.cpp

#include <iostream>
 
#include "Point.h"
 
int main()
{
   Point<int, int, double> a;
   Point<int, int*, 5> b;
 
   a.function1();
   b.function1();
}

Point.h

#ifndef POINT_H
#define POINT_H
 
#include <iostream>
#include <vector>
 
template<typename T, typename U>
class Point
{
  void function1();
  void function2();
};
 
template<typename T, int>
class Point<T, int>
{
  void function1();
};
 
#include "Point.txx"
template<typename T, typename U>
void Point<T,U>::function1()
{
  std::cout << "Primary template function1" << std::endl;
}
 
template<typename T, typename U>
void Point<T,U>::function2()
{
  std::cout << "Primary template function2" << std::endl;
}
 
//////////////////
template<class T, int>
void Point<T, int>::function1()
{
  std::cout << "Partial specialization function1" << std::endl;
}
#endif

Point.txx

 

CMakeLists.txt

Project(PartialClassSpecialization)
 
ADD_EXECUTABLE(PartialClassSpecialization PartialClassSpecialization.cpp)