我需要创建一个向量来保存指向某些静态对象的指针(例如,a1,a2,a3).
void foo()
{
static TEST a1, a2, a3;
static vector<TEST *> m_test;
m_test.push_back( &a1 );
m_test.push_back( &a2 );
m_test.push_back( &a3 );
}
Run Code Online (Sandbox Code Playgroud)
但我不想写出每个static对象的声明.
如何使用循环来执行此操作?我尝试过类似的东西:
for (unsigned int i=0; i<10; i++)
{
m_test.push_back( &(static TEST()));
}
Run Code Online (Sandbox Code Playgroud)
但似乎在static表达式中没有任何影响,因为对象被破坏了,正如我期望的那样,正常的临时性.
函数静态对象只能由具有名称的定义声明创建.你不能static像这样创造一个"功能 - 临时".
怎么样:
static const size_t N = 10;
static TEST tests[N];
for (size_t i = 0; i < N; i++) {
m_test.push_back(&tests[i]);
}
Run Code Online (Sandbox Code Playgroud)
否则,你别无选择,只能求助于动态存储对象,唯一的对象,它们的存在在任何给定的范围可以通过编程来控制(尤其是因为他们没有真正在任何范围内的话).实际上,这几乎是动态存储持续时间对象的用例.
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |