C/C++ Build Errors
This section is an alphanumeric reference of the error messages generated by the build tools. To get help on a particular error message, either click the mouse on an error number in the Output window and press F1, or type the error number in the Look for box in the Index.
See Also
pointers
This lesson is on how to use pointers instead of member variables in a class. I keep getting compile errors that i do not understand. The latest is "Error 1 general error c1010070: Failed to load and parse the manifest. The system cannot find the file specified. .\Debug\Week6ex2.exe.intermediate.manifest"
Also I had a c2228 left of .length must be a class/struct/union .
Help in any way would be greatly helpful:)
//The Class Declaration
#include <limits>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class ResistorClass
{
protected:
double *m_dptrRes;
char *m_sptrResName;
public:
enum resistorValues {NOMINAL, TOLERANCE, MIN, MAX};
int m_istResCounter;
void DisplayResistor(void);
void EnterResistance (void);
ResistorClass();
ResistorClass(char ResistorName[], double nominal, double tolerance);
~ResistorClass();
};
int m_istResCounter = 0; //intialize static counter
ResistorClass::ResistorClass()
{
string rName;
m_dptrRes = new double[4];
m_dptrRes[0] = 0;//nominal resistance
m_dptrRes[1] = 0;//tolerance
m_dptrRes[2] = 0;//min resistance
m_dptrRes[3] = 0;//max resistance
//default values
m_dptrRes[NOMINAL] = 1000;
m_dptrRes[TOLERANCE] = .10;
//calculate min and max values
m_dptrRes[MIN] = m_dptrRes[NOMINAL] - (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_dptrRes[MAX] = m_dptrRes[NOMINAL] + (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_sptrResName = new char [50];
cout << "Enter Resistor Name <default>: ";
cin.getline(m_sptrResName,50);
cout << endl;
//get the number of characters in the string
int length = (int)rName.length();
//add one to account for the null character \0
m_sptrResName = new char[length + 1];
//copy from Name to the pointer
strcpy_s(m_sptrResName, length + 1, rName.c_str());
m_istResCounter++;
cout << "Default Constructor Called\n\n";
}
ResistorClass::ResistorClass(char ResistorName[], double nominal, double tolerance)
{
string rName;
m_dptrRes = new double[4];
m_dptrRes[0] = 0;//nominal resistance
m_dptrRes[1] = 0;//tolerance
m_dptrRes[2] = 0;//min resistance
m_dptrRes[3] = 0;//max resistance
//default values
m_dptrRes[NOMINAL] = 1000;
m_dptrRes[TOLERANCE] = .10;
//calculate min and max values
m_dptrRes[MIN] = m_dptrRes[NOMINAL] - (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_dptrRes[MAX] = m_dptrRes[NOMINAL] + (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_sptrResName = new char [50];
//get the number of characters in the string
int length = (int)rName.length();
//add one to account for the null character \0
m_sptrResName = new char[length + 1];
//copy from Name to the pointer
strcpy_s(m_sptrResName, 50, rName);
m_istResCounter++;
cout << "Parameterized Constructor Called\n\n\n";
}
ResistorClass::~ResistorClass ( )
{
cout << "Destructor Called For " << m_sptrResName;
cout << "\n\n";
delete [] m_sptrResName;
delete [] m_dptrRes;
m_sptrResName = NULL;
m_dptrRes = NULL;
m_istResCounter--;
}
int main()
{ //Create the first resistor using the default constructor
ResistorClass oResOne;
oResOne.DisplayResistor();
//Create the second resistor using the parameterized constructor
ResistorClass oResTwo("RESISTOR2", 4700, .20);
oResTwo.DisplayResistor();
//Create a fancy Resistor
cout << endl;
//FancyResistorClass oResThree("FancyResistor", 3000,.10); oResThree.DisplayResistor();
}
//member function that displays the resistors nominal value, its tolerance value, and the minimum and maximum
//possible resistances the resistor could be.
void ResistorClass::DisplayResistor()
//declare and initialize local variables.
{
//use output manipulators
cout << fixed << showpoint;
cout << setprecision(5);
cout << right;
//output resistor information
cout << "The Values for " << m_sptrResName << " are: " << endl;
cout << setw(12) << "Resistor Nominal Value = " << m_dptrRes[NOMINAL] << endl;
cout << setw(12) << "ohmsResistorTolerance = " << m_dptrRes[TOLERANCE]*100 << "%" << endl;
cout << setw(12) << "Mininimum Resistance = " << m_dptrRes[MIN] << " ohms" << endl;
cout << setw(12) << "Maximum Resistance = " << m_dptrRes[MAX] << " ohms" << endl;
cout << endl << endl;
}
//Prompt the user to Enter object1 data, then displays Resistor1
void ResistorClass::EnterResistance(void)
//Initialize and declare
{
bool flag1;
bool flag2;
bool flag3;
bool flag4;
//set flags to false (0)
flag1 = false;
flag2 = false;
flag3 = false;
flag4 = false;
//nested while (do while) loops to check that the input is valid both in value and data type.
//Display error message and prompt the user to enter valid values until they are given.
while ( flag1 == false || flag2 == false)
{ do {
cout << " Enter the Nominal Resistor Value: ";
cin >> m_dptrRes[NOMINAL];
cout << endl;
if (!cin){
flag4 = false;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << " Error Resistor Value\n";
cout << " The Resitor Value Must Be 0 < & > 10,000,000\n\n";
}
else
{ flag4 = true;
}
cout << " Enter the Resistor Tolerance Value: ";
cin >> m_dptrRes[TOLERANCE];
cout << endl << endl;
if (!cin){
flag4 = false;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << " Error Tolerance Value\n";
cout << " Tolerance Value Must Be A Number <= 1";
cout << endl << endl;
}
else
{ flag4 = true;
}
if (m_dptrRes[NOMINAL] > 0 && m_dptrRes[NOMINAL] < 10000000){
flag1 = true;
}
else {flag1 = false;
cout << " Error Resistor Value\n";
cout << " The Resitor Value Must Be A Number 0 < & > 10,000,000\n\n";
}
if (m_dptrRes[TOLERANCE] >=0 && m_dptrRes[TOLERANCE] <= .5){
flag2 = true;
}
else {flag2 = false;
cout << " Error Tolerance Value\n";;
cout << " Tolerance Value Must Be A Number <= 1";
cout << endl << endl;
}
}
while ( flag4 == false );{
m_dptrRes[MIN] = m_dptrRes[NOMINAL] - (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_dptrRes[MAX] = m_dptrRes[NOMINAL] + (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
DisplayResistor();
}
}
}
Also I had a c2228 left of .length must be a class/struct/union .
Help in any way would be greatly helpful:)
//The Class Declaration
#include <limits>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class ResistorClass
{
protected:
double *m_dptrRes;
char *m_sptrResName;
public:
enum resistorValues {NOMINAL, TOLERANCE, MIN, MAX};
int m_istResCounter;
void DisplayResistor(void);
void EnterResistance (void);
ResistorClass();
ResistorClass(char ResistorName[], double nominal, double tolerance);
~ResistorClass();
};
int m_istResCounter = 0; //intialize static counter
ResistorClass::ResistorClass()
{
string rName;
m_dptrRes = new double[4];
m_dptrRes[0] = 0;//nominal resistance
m_dptrRes[1] = 0;//tolerance
m_dptrRes[2] = 0;//min resistance
m_dptrRes[3] = 0;//max resistance
//default values
m_dptrRes[NOMINAL] = 1000;
m_dptrRes[TOLERANCE] = .10;
//calculate min and max values
m_dptrRes[MIN] = m_dptrRes[NOMINAL] - (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_dptrRes[MAX] = m_dptrRes[NOMINAL] + (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_sptrResName = new char [50];
cout << "Enter Resistor Name <default>: ";
cin.getline(m_sptrResName,50);
cout << endl;
//get the number of characters in the string
int length = (int)rName.length();
//add one to account for the null character \0
m_sptrResName = new char[length + 1];
//copy from Name to the pointer
strcpy_s(m_sptrResName, length + 1, rName.c_str());
m_istResCounter++;
cout << "Default Constructor Called\n\n";
}
ResistorClass::ResistorClass(char ResistorName[], double nominal, double tolerance)
{
string rName;
m_dptrRes = new double[4];
m_dptrRes[0] = 0;//nominal resistance
m_dptrRes[1] = 0;//tolerance
m_dptrRes[2] = 0;//min resistance
m_dptrRes[3] = 0;//max resistance
//default values
m_dptrRes[NOMINAL] = 1000;
m_dptrRes[TOLERANCE] = .10;
//calculate min and max values
m_dptrRes[MIN] = m_dptrRes[NOMINAL] - (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_dptrRes[MAX] = m_dptrRes[NOMINAL] + (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_sptrResName = new char [50];
//get the number of characters in the string
int length = (int)rName.length();
//add one to account for the null character \0
m_sptrResName = new char[length + 1];
//copy from Name to the pointer
strcpy_s(m_sptrResName, 50, rName);
m_istResCounter++;
cout << "Parameterized Constructor Called\n\n\n";
}
ResistorClass::~ResistorClass ( )
{
cout << "Destructor Called For " << m_sptrResName;
cout << "\n\n";
delete [] m_sptrResName;
delete [] m_dptrRes;
m_sptrResName = NULL;
m_dptrRes = NULL;
m_istResCounter--;
}
int main()
{ //Create the first resistor using the default constructor
ResistorClass oResOne;
oResOne.DisplayResistor();
//Create the second resistor using the parameterized constructor
ResistorClass oResTwo("RESISTOR2", 4700, .20);
oResTwo.DisplayResistor();
//Create a fancy Resistor
cout << endl;
//FancyResistorClass oResThree("FancyResistor", 3000,.10); oResThree.DisplayResistor();
}
//member function that displays the resistors nominal value, its tolerance value, and the minimum and maximum
//possible resistances the resistor could be.
void ResistorClass::DisplayResistor()
//declare and initialize local variables.
{
//use output manipulators
cout << fixed << showpoint;
cout << setprecision(5);
cout << right;
//output resistor information
cout << "The Values for " << m_sptrResName << " are: " << endl;
cout << setw(12) << "Resistor Nominal Value = " << m_dptrRes[NOMINAL] << endl;
cout << setw(12) << "ohmsResistorTolerance = " << m_dptrRes[TOLERANCE]*100 << "%" << endl;
cout << setw(12) << "Mininimum Resistance = " << m_dptrRes[MIN] << " ohms" << endl;
cout << setw(12) << "Maximum Resistance = " << m_dptrRes[MAX] << " ohms" << endl;
cout << endl << endl;
}
//Prompt the user to Enter object1 data, then displays Resistor1
void ResistorClass::EnterResistance(void)
//Initialize and declare
{
bool flag1;
bool flag2;
bool flag3;
bool flag4;
//set flags to false (0)
flag1 = false;
flag2 = false;
flag3 = false;
flag4 = false;
//nested while (do while) loops to check that the input is valid both in value and data type.
//Display error message and prompt the user to enter valid values until they are given.
while ( flag1 == false || flag2 == false)
{ do {
cout << " Enter the Nominal Resistor Value: ";
cin >> m_dptrRes[NOMINAL];
cout << endl;
if (!cin){
flag4 = false;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << " Error Resistor Value\n";
cout << " The Resitor Value Must Be 0 < & > 10,000,000\n\n";
}
else
{ flag4 = true;
}
cout << " Enter the Resistor Tolerance Value: ";
cin >> m_dptrRes[TOLERANCE];
cout << endl << endl;
if (!cin){
flag4 = false;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << " Error Tolerance Value\n";
cout << " Tolerance Value Must Be A Number <= 1";
cout << endl << endl;
}
else
{ flag4 = true;
}
if (m_dptrRes[NOMINAL] > 0 && m_dptrRes[NOMINAL] < 10000000){
flag1 = true;
}
else {flag1 = false;
cout << " Error Resistor Value\n";
cout << " The Resitor Value Must Be A Number 0 < & > 10,000,000\n\n";
}
if (m_dptrRes[TOLERANCE] >=0 && m_dptrRes[TOLERANCE] <= .5){
flag2 = true;
}
else {flag2 = false;
cout << " Error Tolerance Value\n";;
cout << " Tolerance Value Must Be A Number <= 1";
cout << endl << endl;
}
}
while ( flag4 == false );{
m_dptrRes[MIN] = m_dptrRes[NOMINAL] - (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
m_dptrRes[MAX] = m_dptrRes[NOMINAL] + (m_dptrRes[NOMINAL] * m_dptrRes[TOLERANCE]);
DisplayResistor();
}
}
}
- 10/10/2010
- onthewayup
