ポインターがコピーされnewInstance
、そのコピーの値を変更します。関数内のポインターを変更する場合は、参照渡しする必要があります。
void newInstance(MyClass*& instance)
{
instance = new MyClass(...);
}
または、 a を渡してMyClass**
を実行することもできます*instance = new Class(...);
。
どちらにしても、ポインタを変更可能な引数として渡すのではなく、実際にポインタを返す方が望ましいでしょう。
void myFunc()
{
MyClass * myInstance = newInstance();
delete myInstance;
}
MyClass* newInstance()
{
return new MyClass(...);
}
もちろん、delete
オブジェクトを覚えておく必要があります。これを回避するには、スマート ポインターを使用してより安全にすることができます。
void myFunc()
{
auto myInstance = newInstance();
}
std::unique_ptr<MyClass> newInstance()
{
return std::unique_ptr<MyClass>(new MyClass(...));
}