как напечатать название типа (шаблон темы) - PullRequest
0 голосов
/ 17 июня 2020

эй, парень, это мой код в файле h, и мне нужно создать метод, который должен печатать тип.

    #include <iostream>
    #include <typeinfo>
    using namespace::std;

template <class T>
class Set {
    T* group;
    int size_group;
public:
    Set():group(NULL),size_group(0){};
    Set(T*,int);
    Set(const Set<T>&);
    ~Set();

    void PrintObj()const;
    bool isThere(const T&)const;
    void getType()const;

};


template <class T>
void Set<T>::getType() const{
    cout << "The type is: " << typeid(*this).name() << endl;
}

Main:

#include "Set.h"

int main() {
    int arr[] = {1,4,5,6,3,2};
    int arr2[] = {5,2,6};

    Set<int> j(arr,(sizeof(arr)/sizeof(arr[0]))),l(arr2,sizeof(arr2)/sizeof(arr2[0])),k;

    j.getType();
}

ВЫХОД :

The type is: 3SetIiE

как я могу напечатать имя типа? Это что-то вроде гиббери sh для меня

1 Ответ

0 голосов
/ 17 июня 2020

То, что вы видите, называется искаженным именем . Вы можете использовать boost::core::demangle, чтобы распутать его (https://www.boost.org/doc/libs/1_73_0/libs/core/doc/html/core/demangle.html).

std::cout << boost::core::demangle(typeid(*this).name()) << std::endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...