たとえば、次のようなスマート ポインターがあります。
template <typename T>
class SmartPointer
{
public:
....
T* operator & () { return m_p; }
private:
T* m_p;
}
void foo()
{
std::vector<SmartPointer<int> >vec;
vec.push_back(....);
vec.resize(.....);
......
}
この使い方は安全ですか?私はMINGW4.4で試してみましたが、うまくいきました....
実際、これらのコードは COM で使用されています。オブジェクトを取得したい場合は、これらを実行する必要があります。
SmpartPointer<COMObj> spObj;
HRESULT hr = xxxxx->QueryInterface(&spObj);
次に、ポインタをベクトルに格納したかったので、
std::vector<SmpartPointer<COMObj> >vec;
.....