Προς το περιεχόμενο
  • Εγγραφή
  • 0

Undefined reference error c++


antbyron

Ερώτηση

Δημοσ. (επεξεργασμένο)

Γεια σας, παίρνω ως μηνυμα το λαθος του τιτλου.

#include <iostream>
#include <string>
#include <Vector>

using namespace std;

class Employee
{
  private:
   string empName;
   static float sal;	
   
  public:
  	Employee();
  	Employee(string empName);
  	void setEmpName(string empName);
	string getEmpName();
	virtual float salary(int workDays);
	static void setSal(float salary)
	{
		sal+=salary;
	}
	static float getSal()
	{
		return sal;
	}
};

Employee::Employee(){}

Employee::Employee(string empName)
{
	this->empName = empName;
}

void Employee:: setEmpName(string empName)
{
	this->empName = empName;
}

string Employee:: getEmpName()
{
	return empName;	
}

float Employee::salary(int workDays){}

class SeasonalEmployee:public Employee
{
	private:
		float wage;
	public:
		SeasonalEmployee();
		SeasonalEmployee(string empName,float wage);
		float salary(int workDays);
			
};

SeasonalEmployee::SeasonalEmployee(){}

SeasonalEmployee::SeasonalEmployee(string empName,float wage):Employee(empName)
{
	this->wage = wage;
}

float SeasonalEmployee::salary(int workDays)
{
	return workDays*wage-(2*wage);
}

class Salaried:public Employee
{
	private:
		float wage;
	public:
		Salaried();
		Salaried(string empName,float wage);
		float salary(int workDays);
		float getWage();	
};

Salaried::Salaried(){}

Salaried::Salaried(string empName,float wage):Employee(empName)
{
	this->wage = wage;	
} 

float Salaried::salary(int workDays)
{
	return workDays*wage;
}

float Salaried::getWage()
{
	return wage;
}

class Manager:public Salaried
{
	private:
		float bonus;
	public:
		Manager();
		Manager(string empName,float wage,float bonus);
		float salary(int workDays);
};

Manager::Manager(){}

Manager::Manager(string empName,float wage,float bonus):Salaried(empName,wage)
{
	this->bonus = bonus;
}

float Manager::salary(int workDays)
{
	return workDays*this->getWage()+bonus;
}

int main()
{
	int workDays;
	vector <Employee*> emp;
	SeasonalEmployee se1("antonio",40),se2("spiros",40);
	Salaried s1("manos",55),s2("basilis",55),s3("tasos",55);
	Manager m1("baggos",55,200);
	emp.push_back(&se1);
	emp.push_back(&se2);
	emp.push_back(&s1);
	emp.push_back(&s2);
	emp.push_back(&s3);
	emp.push_back(&m1);
	cout<<"give work days of se1"<<endl;
	cin>>workDays;
	cout<<emp.at(0)->salary(workDays)<<endl;
	Employee::setSal(22.3);
	cout<<"give work days of se2"<<endl;
	cin>>workDays;
	cout<<emp.at(1)->salary(workDays)<<endl;
	cout<<"give work days of s1"<<endl;
	cin>>workDays;
	cout<<emp.at(2)->salary(workDays)<<endl;
	cout<<"give work days of s2"<<endl;
	cin>>workDays;
	cout<<emp.at(3)->salary(workDays)<<endl;
	cout<<"give work days of s3"<<endl;
	cin>>workDays;
	cout<<emp.at(4)->salary(workDays)<<endl;
	cout<<"give work days of m1"<<endl;
	cin>>workDays;
	cout<<emp.at(5)->salary(workDays)<<endl;
	
}

Παραθέτω τον κώδικα. Το λάθος είναι στην γραμμη 137(προς το τέλος είναι η γραμμή "Employee::setSal(22.3);")

Αυτό που προσπαθώ να κάνω είναι να μετράω τους συνολικούς μισθούς όλων των υπαλλήλων. Για αυτό έχω δηλώσει στατική μεταβλητή

την οποία προσπαθώ να προσπελάσω μέσω στατικής μεθόδου, και ακριβώς σε αυτό το σημείο παίρνω το udefined reference.

Thanks.

Επεξ/σία από antbyron
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

6 απαντήσεις σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

  • 0
Δημοσ. (επεξεργασμένο)

Έχει αρκετά προβήματα ο κώδικας πριν κάνει φτάσεις σε αυτό που λες. Σίγουρα τρέχεις αυτό που έστειλες εδώ;

Σε κάθε περίπτωση δες εδώ λίγο πως δουλεύουν τα static data members: https://www.tutorialspoint.com/cplusplus/cpp_static_members.htm
Πιο συγκεκριμένα το σημείο που λέει για initialization.

Επεξ/σία από kaliakman
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
3 minutes ago, kaliakman said:

Έχει αρκετά προβήματα ο κώδικας πριν κάνει φτάσεις σε αυτό που λες. Σίγουρα τρέχεις αυτό που έστειλες εδώ;

Ο κώδικας(αυτόν τρέχω) τρέχει χωρίς λάθη η προειδοποίήσεις. Το ξέρω ότι δεν είναι ο καλύτερος κώδικας. Καταρχήν είναι σπαγγέτι. Έχει και άλλα θέματα βελτιστοποίησης αλλά τρέχει. Αυτό που με κολλάει είναι το undefined reference στην στατική μεταβλητή. Έψαξα στο νετ αλλά δεν βρήκα λύση. Ξέρεις να βοηθήσεις για το συγκεκριμένο που ζητάω;

Just now, antbyron said:

Ο κώδικας(αυτόν τρέχω) τρέχει χωρίς λάθη η προειδοποίήσεις. Το ξέρω ότι δεν είναι ο καλύτερος κώδικας. Καταρχήν είναι σπαγγέτι. Έχει και άλλα θέματα βελτιστοποίησης αλλά τρέχει. Αυτό που με κολλάει είναι το undefined reference στην στατική μεταβλητή. Έψαξα στο νετ αλλά δεν βρήκα λύση. Ξέρεις να βοηθήσεις για το συγκεκριμένο που ζητάω;

Και άλλες συμβουλές αν έχεις, ρίχτες, με ενδιαφέρει.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
Μόλις τώρα, antbyron είπε

Ο κώδικας(αυτόν τρέχω) τρέχει χωρίς λάθη η προειδοποίήσεις. Το ξέρω ότι δεν είναι ο καλύτερος κώδικας. Καταρχήν είναι σπαγγέτι. Έχει και άλλα θέματα βελτιστοποίησης αλλά τρέχει. Αυτό που με κολλάει είναι το undefined reference στην στατική μεταβλητή. Έψαξα στο νετ αλλά δεν βρήκα λύση. Ξέρεις να βοηθήσεις για το συγκεκριμένο που ζητάω;

Δες ξάνα την απάντηση μου. Για παράδειγμα πως ακριβώς δουλεύει το 
 

#include <Vector>

με κεφαλαίο  'V'?

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
2 minutes ago, kaliakman said:

Δες ξάνα την απάντηση μου. Για παράδειγμα πως ακριβώς δουλεύει το 
 

#include <Vector>

με κεφαλαίο  'V'?

Με μικρό το είχα και εκ παραδρομής το άλλαξα. Άλλο;

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
1 λεπτό πριν, antbyron είπε

Με μικρό το είχα και εκ παραδρομής το άλλαξα. Άλλο;

Αν απλά κάνεις compile το πρόγραμμα που έχεις βάλει από πανω θα βρεις ένα πρόβλημα με την 

float Employee::salary(int workDays)

για το αρχικό πρόβλημα σου δες το link που σου έστειλα.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
8 minutes ago, kaliakman said:

Αν απλά κάνεις compile το πρόγραμμα που έχεις βάλει από πανω θα βρεις ένα πρόβλημα με την 

float Employee::salary(int workDays)

για το αρχικό πρόβλημα σου δες το link που σου έστειλα.

Thanks για το ζητουμενο, λύθηκε, χρειαζόταν αρχικοποίηση απλά. Αρχικά προσπαθούσα να κάνω αρχικοποίηση μέσα στην κλάση.

Ποιον compiler χρησιμοποιείς; Με τον devc++ δεν μου βγάζει λάθος σε αυτό που μου δείχνεις. Μόλις το έτρεξα δηλ.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.