我有一个问题。是否可以在运行时为类或结构创建多个对象?
#include<iostream>
#include<conio.h>
using namespace std;
struct node
{
int no;
};
int main()
{
int i;
for(i=0;i<4;i++)
{
struct node s[i];
}
cout<<"Enter the values";
for(i=0;i<4;i++)
{
cin>>s[i].no;
}
cout<<"The values are:";
for(i=0;i<4;i++)
{
cout<<s[i].no<<endl;
}
getch();
return 0;
}
我尝试了上面的方法,但没有成功。任何帮助将不胜感激
答案 0 :(得分:4)
替换
for(i=0;i<4;i++)
{
struct node s[i];
}
与
struct node s[4];
你编写程序的方式不起作用。您在块内定义了节点数组,因此它不会在该块之外可见。
如果要动态分配内存,则必须执行以下操作:
struct node *s = new node[YourDesiredSize];
或者你喜欢c风格(不推荐):
struct node *s;
s = (node*)malloc(YourDesiredSize * sizeof (node));
并且不要忘记释放记忆。
答案 1 :(得分:1)
for(i=0;i<4;i++)
{
struct node s[i];
}
在这里,您可以在for循环中创建一个节点数组。这是本地的,仅在for循环中可用。此外,由于我不是一个常量表达式,因此无法编译。但即使你使用new运算符来分配数组,它也只能在for循环中使用。
相反,你应该在其他地方声明你的数组:
node s[4];
这将通过调用节点的默认c'tor来创建大小为4的数组。那么你的代码应该可以工作。
答案 2 :(得分:1)
如果要在运行时创建结构或类的实例,则需要使用 new 运算符。
struct node* n = new n[4]; // creates an array of 4 node structs
for( int i=0; i<4; ++i )
{
n[i]->no = i;
}
由于这是动态分配的内存,因此当不再需要结构时,您负责释放它。
delete[] n; // free dynamically allocated memory - the brackets are needed because this an array
答案 3 :(得分:0)
如果您知道它们的数量,可以使用本机的实例数组(结构或类),或者如果不知道,可以使用列表或向量等集合。
.bootstrap-datetimepicker-widget table td.active:hover{
background-color: #337ab7;
color:#fff;
}
.bootstrap-datetimepicker-widget button:hover{
background-color: #337ab7;
color:#fff;
}