相关疑难解决方法(0)

大多数可移植且可靠的方法来获取C++中的变量地址

使用&如果变量类型已超载获取变量的地址可能会有问题operator&().例如,_com_ptr_已经operator&()重载,具有修改对象的副作用.

现在我有一组复杂的模板,其功能如下:

template<class T>
void process( const T* object )
{
    //whatever
}    

template<class T>
void tryProcess( T& object )
{
    process( &object )
}
Run Code Online (Sandbox Code Playgroud)

tryProcess()我需要得到一个T*字保存类型的实际对象的地址T.

tryProcess()如果class T没有operator&()重载,上面的实现只会正常工作.所以,如果我打电话,tryProcess<_com_ptr_<Interface>>()我可以得到意想不到的结果 - 重载operator&()被触发.

另一个问题中,建议采用以下解决方法:

template<class T>
T* getAddress( T& object )
{
   return reinterpret_cast<T*>( &reinterpret_cast<char&>( object ) );
}
Run Code Online (Sandbox Code Playgroud)

有了这样的功能,我可以实现tryProcess()如下:

template<class T>
void tryProcess( …
Run Code Online (Sandbox Code Playgroud)

c++ casting visual-c++

6
推荐指数
1
解决办法
1055
查看次数

如何在c/c ++中将文件从一个目录复制到另一个目录

我正在寻找一个关于如何在C中将文件从一个目录复制到另一个目录的简单示例.该程序应该只使用C本机的跨平台函数.

c c++ file-io

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

标签 统计

c++ ×2

c ×1

casting ×1

file-io ×1

visual-c++ ×1