Feedback

C++ - Einfaches Beispiel für Traits

Veröffentlicht von am 03.06.2008
(1 Bewertungen)
Hierbei handelt es sich um ein einfaches Beispiel für Traits. Wer mehr über diese Technik wissen möchte findet z. B. hier Informationen:
http://thad.notagoth.org/cpptraits_intro/
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) - Komplett 

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

#include <iostream>
#include <vector>
#include <boost/tr1/utility.hpp>
using namespace std;

template< typename T > 
struct is_pointer{ 
	static const bool value = false; 
}; 

template< typename T > 
struct is_pointer< T* >{ 
	static const bool value = true; 
}; 

template< typename T >
void foo(T x)
{
	if (is_pointer<T>::value)
	{
		cout<<"pointer"<<endl;
	}
	else
	{
		cout<<"no pointer"<<endl;
	}
}

template< bool b > 
struct algorithm_selector { 

	template< typename T > 
	static void implementation( T& object ) 
	{ 
		cout<<"no pointer"<<endl;
	} 
}; 

template < > 
struct algorithm_selector< true > { 

	template< typename T > 
	static void implementation( T& object ) 
	{ 
		cout<<"pointer"<<endl;
	} 
}; 

template< typename T >
void foo2(T x)
{
	algorithm_selector<is_pointer<T>::value>::implementation(x);
}

int main()
{
	int *x =0;
	foo(x);
	foo2(x);

	system("pause");
}
Abgelegt unter Traits.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!