我正在尝试动态分配一个结构,并且需要知道我是否做得对。根据我的书,我是。但是我的编译器给了我一个错误。以下是相关代码:
#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定义为指向该结构的指针时,我不明白这是怎么看的。我在这里错过了什么吗?
提前感谢任何回复
答案 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
,您可以避免许多错误和痛苦的工作。