6 Replies - 838 Views - Last Post: 11 December 2009 - 11:53 AM Rate Topic: -----

#1 secretformula   User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 48
  • Joined: 10-December 09

Followup question unknown error

Posted 11 December 2009 - 11:37 AM

So in my previous post I was trying to give each element a different class but after a suggestion from one of the members I just made a element class and made different instances for each element. Unfortunately when I was all set and done the GCC compiler gave me this error: "main.cpp|10|error: request for member `getBoil' in `H', which is of non-class type `element*'" I have no idea what this error is or how to fix it below is my code.
element.h
#ifndef ELEMENT_H_INCLUDED
#define ELEMENT_H_INCLUDED
#include <string>
using namespace std;

class element
{
	public:
		// element class constructor
		element( string iname, string itype, string iphase, string ielecConfig, int iatomNumber, int iatomWeight, int ineutronNumber, int ielecNumber, double imelt, double iboil, double itriple, double icritical, double iheatFusion, double iheatVapor );
		// "get" methods for data
		string getName( );
		string getType( );
		string getPhase( );
		string getElecConfig( );
		int getatomNumber( );
		int getatomWeight( );
		int getneutronNumber( );
		int getelecNumber( );
		double getMelt( );
		double getBoil( );
		double getTriple( );
		double getCritical( );
		double getHeatFusion( );
		double getHeatVapor( );
	private:
		// Element infos
		string name;
		string type;
		string phase;
		string elecConfig;
		int atomNumber;
		int atomWeight;
		int neutronNumber;
		int elecNumber;
		double melt;
		double boil;
		double triple;
		double critical;
		double heatFusion;
		double heatVapor;

};
#endif // ELEMENT_H_INCLUDED

element.cpp
#include <iostream>
#include <string>
#include "element.h"

using namespace std;
// Start element define
element::element( string iname, string itype, string iphase, string ielecConfig, int iatomNumber, int iatomWeight, int ineutronNumber, int ielecNumber, double imelt, double iboil, double itriple, double icritical, double iheatFusion, double iheatVapor )
{
	this->name = iname;
	this->type = itype;
	this->phase = iphase;
	this->elecConfig = ielecConfig;
	this->atomNumber = iatomNumber;
	this->atomWeight = iatomWeight;
	this->neutronNumber = ineutronNumber;
	this->elecNumber = ielecNumber;
	this->melt = imelt;
	this->boil = iboil;
	this->triple = itriple;
	this->critical = icritical;
	this->heatFusion = iheatFusion;
	this->heatVapor = iheatVapor;
}
string element::getName( ) { return name; }
string element::getType( ) { return type; }
string element::getPhase( ) { return phase; }
string element::getElecConfig( ) { return elecConfig; }
int element::getatomNumber( ) { return atomNumber; }
int element::getatomWeight( ) { return atomWeight; }
int element::getneutronNumber( ) { return neutronNumber; }
int element::getelecNumber( ) { return elecNumber; }
double element::getMelt( ) { return melt; }
double element::getBoil( ) { return boil; }
double element::getTriple( ) { return triple; }
double element::getCritical( ) { return critical; }
double element::getHeatFusion( ) { return heatFusion; }
double element::getHeatVapor( ) { return heatVapor; }

Main.c
#include <iostream>
#include <string>
#include "element.h"

using namespace std;
void elementAssign( );
int main()
{
	element *H = new element( "Hyrogen", "Nonmetal", "Gas", "1s^1", 1, 1, 0, 1, 14.01, 20.28, 13.80, 32.97, .117, .904 );
	cout << H.getBoil( );
	return 0;
}

Thanks in advance

Is This A Good Question/Topic? 0
  • +

Replies To: Followup question unknown error

#2 jjl   User is offline

  • Engineer
  • member icon

Reputation: 1271
  • View blog
  • Posts: 4,998
  • Joined: 09-June 09

Re: Followup question unknown error

Posted 11 December 2009 - 11:42 AM

your trying to output H->boil in main. But your members are set to private.

also your functions are doing anythings since you get all of your info through your constructor
Was This Post Helpful? 0
  • +
  • -

#3 secretformula   User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 48
  • Joined: 10-December 09

Re: Followup question unknown error

Posted 11 December 2009 - 11:45 AM

I thought I would be able to do that since the get methods are part of the class so they (i thought) could access the private data and then return it.
Was This Post Helpful? 0
  • +
  • -

#4 jjl   User is offline

  • Engineer
  • member icon

Reputation: 1271
  • View blog
  • Posts: 4,998
  • Joined: 09-June 09

Re: Followup question unknown error

Posted 11 December 2009 - 11:49 AM

ha i missed it lol dereference your pointer
cout << H->getBoil( );


But it does make more sense to make your members public if you need to access them in main

This post has been edited by ImaSexy: 11 December 2009 - 11:50 AM

Was This Post Helpful? 0
  • +
  • -

#5 JackOfAllTrades   User is offline

  • Saucy!
  • member icon

Reputation: 6260
  • View blog
  • Posts: 24,030
  • Joined: 23-August 08

Re: Followup question unknown error

Posted 11 December 2009 - 11:51 AM

The problem is you're trying to access a pointer as if it were a plain old object.

You need to use the -> operator to access a member function through a pointer, not the .

Ima, getBoil() *is* public:
class element
{
    public:
        // element class constructor
        element( string iname, string itype, string iphase, string ielecConfig, int iatomNumber, int iatomWeight, int ineutronNumber, int ielecNumber, double imelt, double iboil, double itriple, double icritical, double iheatFusion, double iheatVapor );
        // "get" methods for data
        ...
        double getBoil( );

Was This Post Helpful? 1
  • +
  • -

#6 secretformula   User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 48
  • Joined: 10-December 09

Re: Followup question unknown error

Posted 11 December 2009 - 11:51 AM

Lol thanks I guess I was mixing the java I learn in school with the C++ I like to use. It works now.
Was This Post Helpful? 0
  • +
  • -

#7 jjl   User is offline

  • Engineer
  • member icon

Reputation: 1271
  • View blog
  • Posts: 4,998
  • Joined: 09-June 09

Re: Followup question unknown error

Posted 11 December 2009 - 11:53 AM

just remember when you declare a pointer you need to dereference it with the -> operator. If its not apointer you can access the values directly with a dot (.)
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1