强制转换表达式、模板参数、构造函数调用…)谢谢。我知道这是可能的。你能帮我发个例子说明如何实施吗?我想向该方法发送void指针和类型。该方法可以进行强制转换。你能帮助我吗?在C++中使用C样式的转换是不好的,因为你不清楚你是否正在执行语义转换( Stasy

强制转换表达式、模板参数、构造函数调用…)谢谢。我知道这是可能的。你能帮我发个例子说明如何实施吗?我想向该方法发送void指针和类型。该方法可以进行强制转换。你能帮助我吗?在C++中使用C样式的转换是不好的,因为你不清楚你是否正在执行语义转换( Stasy,c++,casting,void-pointers,C++,Casting,Void Pointers,强制转换表达式、模板参数、构造函数调用…)谢谢。我知道这是可能的。你能帮我发个例子说明如何实施吗?我想向该方法发送void指针和类型。该方法可以进行强制转换。你能帮助我吗?在C++中使用C样式的转换是不好的,因为你不清楚你是否正在执行语义转换( StasyType Case),重新解释地址为其他东西( RealTytCase),或者删除 const 限定符( conconsCAST )因此,您可能认为您正在执行一项操作,而实际上编译器正在使用另一项操作,从而导致意外行为。再次感谢。是否可以将de


强制转换表达式、模板参数、构造函数调用…)谢谢。我知道这是可能的。你能帮我发个例子说明如何实施吗?我想向该方法发送void指针和类型。该方法可以进行强制转换。你能帮助我吗?在C++中使用C样式的转换是不好的,因为你不清楚你是否正在执行语义转换(<代码> StasyType Case<代码>),重新解释地址为其他东西(<代码> RealTytCase),或者删除<代码> const 限定符(<代码> conconsCAST )因此,您可能认为您正在执行一项操作,而实际上编译器正在使用另一项操作,从而导致意外行为。再次感谢。是否可以将decltype作为参数发送?可以。您可以使用
decltype(expression)
在任何地方使用类型名称(即声明变量、类成员、参数和函数返回值、强制转换表达式、模板参数、构造函数调用…),谢谢。我知道这是可能的。你能帮我发个例子说明如何实施吗?我想向该方法发送void指针和类型。该方法可以进行强制转换。你能帮帮我吗?
 double i = 3; 
 void *pointer = &i;
 double p = *((double*) pointer); 
 char* myType= typeid(i).name();//get the name of type of "i"
 int p = *((myType*) pointer); // how to implement? 
double dValue = 77.7;
void* pValue = &dValue;

//output "pV" / pointer void (depending on compiler and OS)
std::cout << typeid(dValue).name() << std::endl;
int iOutValue = 0;
double dOutValue = 0;

char* name = "double";
if(!strcmp(name, "int"))
{
    iOutValue = *((int*)pValue);
}
else if(!strcmp(name, "double"))
{
    dOutValue = *((double*)pValue);
}                   
char* myType= typeid(i).name();//get the name of type of "i"
int p = *((myType*) pointer); // how to implement? 
typedef decltype(i) myType;
myType p = *((myType*) pointer);
typedef decltype(i) myType;
auto p = *reinterpret_cast<myType*>(pointer);
void myFunction(void* unknownParam) {
    typedef (realTypeOf unknownParam) RealType; // <-- this is not real c++
    RealType &a = *reinterpret_cast<RealType*>(unknownParam)
    //do stuff using 'a'
}
-(void)myFunction:(id)unknownParam {
    if([unknownParam respondsToSelector:@selector(myMethod)])
        [unknownParam performSelector:@selector(myMethod)]
}