强制转换表达式、模板参数、构造函数调用…)谢谢。我知道这是可能的。你能帮我发个例子说明如何实施吗?我想向该方法发送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)]
}