C++ 有什么方法可以使用int变量来完成组件名吗?

C++ 有什么方法可以使用int变量来完成组件名吗?,c++,c++builder,C++,C++builder,例如,我可以使用int变量x=5来获取组件编号5,Image1,Image2…Image5 就像您使用数组中的变量来选择数组[x]的特定元素一样。您可以使用向量保持,比如图像,然后小心地使用自定义函数按索引获取图像,您需要注意的技巧是,如果向量以某种方式排序或任何元素改变其位置,那么你的代码就要被破解了 这里有一个例子 #include <vector> std::vector<abc::file> files {file1,file2,file3,file4}; ab

例如,我可以使用int变量x=5来获取组件编号5,Image1,Image2…Image5


就像您使用数组中的变量来选择数组[x]的特定元素一样。

您可以使用向量保持,比如图像,然后小心地使用自定义函数按索引获取图像,您需要注意的技巧是,如果向量以某种方式排序或任何元素改变其位置,那么你的代码就要被破解了

这里有一个例子

#include <vector>

std::vector<abc::file> files {file1,file2,file3,file4};
abc::file getByIndex(int index)
{
    if(index<0 || index>files.size())
        return abc::file::invalid;
    return files.at(index);
}

int main()
{
    int i = 5; 
    abc::file5 = getByIndex(i);
    std::cout << 'here is the end\n';
}
#包括
向量文件{file1,file2,file3,file4};
abc::文件getByIndex(int-index)
{
if(indexfiles.size())
返回abc::file::invalid;
返回文件.at(索引);
}
int main()
{
int i=5;
abc::file5=getByIndex(i);
标准::cout
有什么方法可以使用int变量来完成组件名吗

没有

但是,也没有必要这样做,因为:

您可以使用数组中的变量来选择数组[x]的特定元素

总之:您可以使用数组来代替。

不是直接的,不。这意味着,类似这样的东西不起作用:

intx=5;
Imagex->。。。
或:

intx=5;
(图像+x)->。。。
正如其他答案所述,您可以将组件指针存储到数组中,然后根据需要使用变量索引到该数组中,例如:

TImage*图像[5];
...
图像[0]=图像1;
图像[1]=图像2;
图像[2]=图像3;
图像[3]=图像4;
图像[4]=图像5;
...
int x=5;
图像[x-1]->。。。
还有另一个选项-您可以使用组件所有者的
FindComponent()
方法(其中
TForm
是在设计时放置的任何组件的
owner
),例如:

intx=5;
静态转换(所有者->FindComponent(“图像”+字符串(x)))->。。。
然后,通过在循环中使用
FindComponent()
,可以将其与数组方法结合使用,以避免对引用进行硬编码:

TImage*图像[5];
...
对于(int num=1;i FindComponent(“Image”+字符串(num));
...
int x=5;
图像[x-1]->。。。

No。使用数组。我不清楚这个问题,因为你想要实现的显而易见的解决方案是使用数组,但你似乎已经意识到了。你必须给出更多细节、示例,并尝试更清晰地回答这个问题。
array[x]甚至是你所要问的精确语法。请解释不清楚如何做它和/或阻止你做什么。是的,你可以做你所做的事情。你唯一不能做的就是用变量指定数组长度。好,我在C++ Builder中工作,我有一个按钮,它应该把图像加载到5个之一。图像组件的形式,它取决于整型变量的图像组件将被使用,我不知道是否有任何方法,我使用该整型变量“选择”图像组件,如果我的变量是4,我应该使用Image4来加载我的图像。如果我不清楚,我很抱歉,我还在学习。谢谢你的建议。创建这些按钮(或指向它们的指针)的数组,并使用该变量访问该数组。