我有一个关于指针问题:C++ |法范围指针管理
class CAppFramework : public IBaseApp
{
public:
CAppFramework(std::initializer_list< CClientApp* > input);
CAppFramework();
~CAppFramework();
void Create() override;
void Release() override;
template< class T > T** Request(std::string c_appname)
{
for (auto c_app : m_ClientApps)
{
if (c_app -> GetName() == c_appname)
{
T** t_app = reinterpret_cast< T** >(c_app);
return t_app;
}
}
return nullptr;
}
std::vector< CClientApp* >& GetClientApps();
private:
std::vector< CClientApp* > m_ClientApps;
};
void CTest::Create()
{
std::cout << "Ayye" << std::endl;
CTest* test = *(m_Framework->Request<CTest>(
"Test"));
test -> RunTest();
}
CTEST是CClientApp派生类。
我需要删除测试吗?如果我这样做,会导致访问冲突。 我想这是因为“请求”返回一个指向矢量内的指针的指针,所以当我解引用它并删除它时,它会删除该矢量中的对象,它可能仍会被使用?
这是一个更普遍的问题。我是否需要删除每个指针或仅使用“新”动态分配的指针?
我希望有人能帮助我。
如果您需要'reinterpret_cast'在这种情况下,某件事情是错误的。你能提供[MCVE]吗? –
对不起,我编辑并试图使其可以理解。 – user7814615