← index
cplusplus11.Examples/templates/template-pointer.cpp
Source: cplusplus11.Examples/templates/template-pointer.cpp
#include<iostream>
#include<fstream>
#include<string>
#include<cstdio>
#include<cstdlib>


template<typename T>
class LongPointer {
public:
    LongPointer(T *v) : ptr((unsigned long)v) {}
    unsigned long &intValue() {
        return ptr;
    }
    T *ptrValue() { return (T*)ptr; }
private:
    unsigned long ptr;
    
};

int main() {
    
    
    char *value = (char*) std::calloc(1, 100);
    sprintf(value, "%s", "Hello World");
    LongPointer<char> ptr(value);
    
    std::cout << "Integer value for Pointer: " << ptr.intValue() << "\n";
    std::cout << "String value char* ptr: " << (char*)ptr.ptrValue() << "\n";
    
    free(value);
    
    return 0;
}