相关疑难解决方法(0)

是否可以编写模板来检查函数的存在?

是否可以编写一个模板来改变行为,具体取决于是否在类上定义了某个成员函数?

这是我想写的一个简单例子:

template<class T>
std::string optionalToString(T* obj)
{
    if (FUNCTION_EXISTS(T->toString))
        return obj->toString();
    else
        return "toString not defined";
}
Run Code Online (Sandbox Code Playgroud)

所以,如果class T已经toString()确定的话,就使用它; 否则,它没有.我不知道怎么做的神奇部分是"FUNCTION_EXISTS"部分.

c++ templates sfinae template-meta-programming

458
推荐指数
20
解决办法
14万
查看次数

如何获取模板的类型,如模板<typename T>,并检查T是int还是float或类

问题简述如下:

template <typename T>
void display(T data){
    if(is_int(T)) // how to check if T is int in this function is_int
        printf("<int> %d", data);
    if(is_float(T)) // how to check if T is float in this function is_float
        printf("<int> %f", data);
    if(is_class(T)) // how to check if T is class in this function is_class
        data.display();
}
Run Code Online (Sandbox Code Playgroud)

这里假设T可以是int或float的类型或类.

如果我定义了一些变量并希望使用相同的函数显示它们的值:

int a = 10:
float b = 2.7;
A_Class c;

display(a);
display(b);
display(c);
display(new int(3));
display(new float(1.899));
display(new float(1));
Run Code Online (Sandbox Code Playgroud)

我知道在C++中,有一个用于检查int和float的解决方案(仅用于打印问题),即使用std :: cout,如本问题中所述(C++模板 - …

c++ templates c++11

3
推荐指数
2
解决办法
3437
查看次数