我从结构开始,但在动态分配结构数组时遇到问题。我正在做我在书中和在互联网上看到的事情,但我做对了。
这都是完整的错误消息:
C2512:“记录”:没有合适的默认构造函数
IntelliSense:类“Record”不存在默认构造函数
#include <iostream>
#include <string>
using namespace std;
const int NG = 4; // number of scores
struct Record
{
string name; // student name
int scores[NG];
double average;
// Calculate the average
// when the scores are known
Record(int s[], double a)
{
double sum = 0;
for(int count = 0; count != NG; count++)
{
scores[count] = s[count];
sum += scores[count];
}
average = a;
average = sum / NG;
}
};
int main()
{
// Names of the class
string names[] = {"Amy Adams", "Bob Barr", "Carla Carr",
"Dan Dobbs", "Elena Evans"};
// exam scores according to each student
int exams[][NG]= { {98, 87, 93, 88},
{78, 86, 82, 91},
{66, 71, 85, 94},
{72, 63, 77, 69},
{91, 83, 76, 60}};
Record *room = new Record[5];
return 0;
}
最佳答案
错误很明显。在您尝试分配数组时:
Record *room = new Record[5];
必须实现默认的构造函数
Record::Record()
,以便可以创建Record
的5个实例:struct Record
{
...
Record() : average(0.0) { }
Record(int s[], double a) { ... }
};
还要注意,在C++中,您要避免动态分配(除非您有充分的理由这么做)。在这种情况下,改为使用
std::vector
更为合理:std::vector<Record> records(5);
关于c++ - 错误C2512:没有合适的默认构造函数(不是类),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19850765/