error C2512 in precompiled header file?

Posted by SoloMael on Stack Overflow See other posts from Stack Overflow or by SoloMael
Published on 2013-11-08T03:50:11Z Indexed on 2013/11/08 3:53 UTC
Read the original article Hit count: 285

I'm having a ridiculously strange problem. When I try to run the program below, there's an error message that says: "error C2512: 'Record' : no appropriate default constructor available". And when I double-click it, it directs me to a precompiled read-only header file named "xmemory0". Do they expect me to change a read-only file? Here's the segment of code in the file it directs me to:

void construct(_Ty *_Ptr)
{   // default construct object at _Ptr 
    ::new ((void *)_Ptr) _Ty();  // directs me to this line
}

Here's the program:

#include <iostream>
#include <vector>
#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}};

    vector<Record> records(5);


    return 0;
}

© Stack Overflow or respective owner

Related posts about c++

Related posts about vector