动态分配结构的内存

时间:2012-12-12 02:27:54

标签: c++ memory structure

我正在尝试动态分配一个结构,并且需要知道我是否做得对。根据我的书,我是。但是我的编译器给了我一个错误。以下是相关代码:

#include <iostream>
#include <string>
#include <cstdlib>  
#include <iomanip>

using namespace std;

//Declare structure
struct Airports{
    string name;
    string airID;
    double elevation;
    double runway;};

Airports *airptr;

airptr = new Airports[3];//This is where the error is happening

编译器似乎认为airptr“没有存储类或类型说明符”。当我定义一个结构然后将airptr定义为指向该结构的指针时,我不明白这是怎么看的。我在这里错过了什么吗?

提前感谢任何回复

1 个答案:

答案 0 :(得分:2)

正如我写的那样,问题中提出的代码是......

#include <iostream>
#include <string>
#include <cstdlib>  
#include <iomanip>

using namespace std;

//Declare structure
struct Airports{
    string name;
    string airID;
    double elevation;
    double runway;};

Airports *airptr;

airptr = new Airports[3];//This is where the error is happening

如果函数外部有非声明语句,编译器会尝试将其解释为声明,但失败。

将其放入main函数中。


此外,通过使用std::vector而不是原始数组,指针和new,您可以避免许多错误和痛苦的工作。