我有一個關於指針問題: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