gpt4 book ai didi

c++ - 访问类中指针的 vector

转载 作者:太空狗 更新时间:2023-10-29 20:56:38 30 4
gpt4 key购买 nike

我正在尝试找出一种方法来跟踪我创建的类的所有实例,以便我可以使用标题字符串(或 int ID)随时访问它们

我决定使用指向每个实例的指针的静态 vector ,然后在创建每个实例时将指向它的指针添加到 vector 中。

这在一定程度上可行,但在某一时刻, vector 的每个元素内的值似乎重置/获得随机分配的值,我无法弄清楚发生了什么。

我在此处将对象添加到 vector 中:

SWindow::SWindow(LPCWSTR WindowClass, LPCWSTR Title, UINT Style, int x, int y, int height, int width, HWND hParWnd, HINSTANCE hInstance)
:
x(x),
y(y)
{
hWnd = CreateWindowEx(NULL, WindowClass, Title, Style, x, y, height, width, hParWnd, NULL, hInstance, NULL);
SWindows.push_back(this);

值改变的函数是:它是 SWindow 类的成员

SWindow.h:

static SWindow* GetSWindow(wstring ws);

SWindow.cpp:

 SWindow* SWindow::GetSWindow(wstring ws)
{
for (int i = 0; i < SWindow::SWindows.size(); i++)
{
if (SWindows[i]->title == ws)
{
return SWindows[i];
}
else
{
}
}

return 0;
}

我正在使用不同的类访问函数:

SWindow* pPlayViewer = SWindow::GetSWindow(L"Viewer");

此外,如果这是做我想做的事情的糟糕方法,请告诉我更好的方法。谢谢!

最佳答案

您确定没有将分配给堆栈的对象添加到静态 vector 中吗?您是否在删除对象时删除了指针?

如果你想更有效率,我建议你使用一个映射,其中键可以是你的标题字符串/id int,值是指针,这样搜索会比解析整个数组快得多.

关于c++ - 访问类中指针的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156498/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com