2 Replies - 426 Views - Last Post: 19 April 2013 - 09:00 AM Rate Topic: -----

#1 simonoid  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 19-April 13

cannot convert param. from 'std::string' to 'int'

Posted 19 April 2013 - 04:38 AM

I am making an arhive for teachers to keep track of students personal data.

My error message: (FAULT LIES IN LINE 314 OF MAIN ARCHIVE)

error C2664:
'Personalia::Personalia(std::string,int,int,std::string,std::string,double,std::string)' : cannot convert parameter 2 from 'std::string' to 'int'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

I hope that the functions not being in english is not a problem.

this is my main archive:


#include<iomanip>
#include <iostream>
#include <string>
#include <vector>
#include <fstream> 
#include <locale.h>
#include"header.h"
#include"Klasse.cpp"
using namespace std;

void Intro();
void HovedMeny();

void Opprett(vector<Personalia>& nyarkiv);
void Utskrift(vector<Personalia>& nyarkiv);
void Endre(vector<Personalia>& nyarkiv);
void Skrivtilfil(vector<Personalia>& nyarkiv);
void Lesfrafil(vector<Personalia>& nyarkiv);
void Slett(vector<Personalia>& nyarkiv);
void Info(vector<Personalia>& nyarkiv);

void main(void)
{
	system("color 02");
	char *locale;  
	locale = setlocale(LC_ALL, "");

	Intro();	
	HovedMeny();	
}

void Intro()
	{
		cout<<"\nVelkommen til klassearkivet. Arkivet er ment som et hjelpemiddel"<<endl;
		cout<<"for lærere. Her kan du selv opprette klasser, legge til elever"<<endl;
		cout<<"og holde oversikt over elevens karakterer og snitt i de forskjellige fagene\n"<<endl<<endl;
		
		system("pause");
		system("cls");
}

void HovedMeny(){

	vector<Personalia> elever;
	
	Lesfrafil(elever);

	
	
	int valg;

	do{
		system("cls");
		cout<<"\n\n     ************************ HOVEDMENY ************************"<<endl;
		cout<<"     *                                                         *"<<endl;
		cout<<"     *"<<setw(15)<<"ADMINISTRASJON"<<setw(35)<<"OVERSIKT"<<"       *"<<endl;
		cout<<"     *                                                         *"<<endl;
		cout<<"     *"<<setw(15)<<"1. Opprett personalia"<<setw(29)<<"4. Vis personalia"<<"             *"<<endl;
		cout<<"     *"<<setw(14)<<"2. Endre personalia"<<setw(21)<<""<<"5. Informasjon"<<"          *"<<endl;
		cout<<"     *"<<setw(11)<<"3. Slette personalia"<<setw(36)<<""<<"          *"<<endl;
		cout<<"     *"<<"                                    0. Avslutt"<<"           *"<<endl;
		cout<<"     *                                                         *"<<endl;
		cout<<"     ***********************************************************"<<endl;
		cin>>valg;

		switch(valg){

		case 1:
			Opprett(elever);
			break;

		case 2:
			Endre(elever);
			break;

		case 3:
			Slett(elever);
			break;

		case 4:
			Utskrift(elever);
			break;

		case 5:
			Info(elever);

		case 0:
			Skrivtilfil(elever);
			break;

		default:
			if(valg!=0)
			{
				system("cls");
				cout<<endl<<"Ugyldig valg\n";

				system("pause");
				system("cls");
			}
		}
	}
	while(valg!=0);
	system("cls");

}

void Opprett(vector<Personalia>& nyelever){

	system("cls");
	string elevnavn;
	string klasse;
	string fag;
	string merknad;
	int ansattnummer;
	int fdato;
	double karakter;
	cout<<"Skriv inn elevens navn: ";
	cin>>elevnavn;
	cout<<"Ansattnummer:";
	cin>>ansattnummer;
	cout<<"Fødselsdato ";
	cin>>fdato;
	cout<<"Klasse: ";
	cin>>klasse;
	cout<<"Fag: ";
	cin>>fag;
	cout<<"Karakter(prosent): ";
	cin>>karakter;
	cout<<"Merknad: ";
	cin>>merknad;
	

	Personalia nyPersonalia(elevnavn, ansattnummer, fdato, klasse, fag, karakter, merknad); 
		nyelever.push_back(nyPersonalia);
		cout << endl;

	Skrivtilfil(nyelever);
	
	system("cls");

	cout << "Ny informasjon opprettet:" << endl << endl;
	cout << "PERSONALIA"<< endl;
	cout << "Elev: " << elevnavn << endl;
	cout << "Ansattnummer: " << ansattnummer<<" Fødselsdato: " <<fdato << endl;
	cout << "Klasse: " << klasse << endl; 
	cout << "Fag: " << fag << " Karakter: "<<karakter << endl;
	cout << "Merknad" << merknad <<endl<<endl;
		
	system("pause");
}

void Utskrift(vector<Personalia>& nyelever){
	system("cls");
	

	unsigned int antall = nyelever.size();
	for(unsigned int i = 0; i < antall; i++){
	cout << "----------------------------" << endl;
	cout << "PERSONALIA :  "<<i+1<< endl;
	cout << "Elev " << nyelever[i].hentelevnavn() << endl;
	cout << "Ansattnummer: " << nyelever[i].hentansattnummer() << " Fødselsdato: " << nyelever[i].hentfdato()<<endl; 
	cout << "Klasse: " << nyelever[i].hentklasse() << endl;
	cout << "Fag: " << nyelever[i].hentfag() << " Karakter: " <<endl; 
	cout << "Merknad: " << nyelever[i].hentmerknad() << endl << endl;
	
	cout << endl;
	}
	system("pause");
}

void Endre(vector<Personalia>& nyelever){

	system("cls");

	int pnummer;
	int teller = 0;
	string nyelevnavn;
	string nyklasse;
	string nyfag;
	string nymerknad;
	int nyansattnummer;
	int nyfdato;
	double nykarakter;
	
	int antall = nyelever.size();
	for(int i = 0; i < antall; i++){
		cout << teller << "." << nyelever[i].hentelevnavn() << endl;
		teller++;
	}
	cout << endl;

	cout << "Skriv inn nummer på loggen du vil endre: " << endl;
	cin >> pnummer;
	
	if(pnummer > antall){
		cout << "Denne filen finnes ikke." << endl;
		system("pause");
		return;
	}
	else{


	system("cls");

	char menyvalg='j';
	while(menyvalg=='j'){
	int endrevalg;
	cout << "Hva ønsker du å endre?" << endl<<endl;
	cout << "1. Elev " << nyelever[pnummer].hentelevnavn() << endl;
	cout << "2. Ansattnummer: " << nyelever[pnummer].hentansattnummer() << endl;
	cout << "3. Klasse: " << nyelever[pnummer].hentklasse() <<endl;
	cout << "4. Fødselsdato: " << nyelever[pnummer].hentfdato()<<endl; 
	cout << "5. Fag: " << nyelever[pnummer].hentfag() <<endl;
	cout << "6. Karakter: " <<endl; 
	cout << "7. Merknad: " << nyelever[pnummer].hentmerknad() << endl << endl;
	cout << "10. Ingenting."<<endl<<endl;
	cin >> endrevalg;
	if(endrevalg==1){
		cout<< "Skriv inn nytt navn: " << endl;
		cin >> nyelevnavn;
		nyelever[pnummer].settelevnavn(nyelevnavn);}
	if(endrevalg==2){
		cout << "Skriv inn nytt ansattnummer: " <<endl;
		cin>>nyansattnummer;
	nyelever[pnummer].settansattnummer(nyansattnummer);}
	if(endrevalg==3){
		cout<<"Skriv inn ny Klasse: " <<endl;
		cin>>nyklasse;
	nyelever[pnummer].settklasse(nyklasse);}
	if(endrevalg==4){
		cout<< "Skriv inn ny fødselsdato: " <<endl;
	cin>>nyfdato;
	nyelever[pnummer].settfdato(nyfdato);}
	if(endrevalg==5){
		cout<<"Skriv inn nytt fag: "<<endl;
	cin>>nyfag;
	nyelever[pnummer].settfag(nyfag);}
	if(endrevalg==6){
		cout<<"Skriv inn ny karakter: " << endl;
		cin>>nykarakter;
		nyelever[pnummer].settkarakter(nykarakter);}
	if(endrevalg==7){
		cout<<"Skriv inn ny merknad: " <<endl;
		cin>>nymerknad;
		nyelever[pnummer].settmerknad(nymerknad);}
	if(endrevalg==10){
		cout<< "Du gjorde ingen endringer."<<endl<<endl;
		system("pause");}
	cout<<"Ønsker du å gjøre flere endringer?(j/n):";
	cin>>menyvalg;
	}

	system("cls");

	cout << "Du har utført følgende endringer:" << endl;
	cout << "-----------------------------" << endl;
	cout << "PERSONALIA :  "<<endl;
	cout << "Elev " << nyelever[pnummer].hentelevnavn() << endl;
	cout << "Ansattnummer: " << nyelever[pnummer].hentansattnummer() <<" Fødselsdato: " << nyelever[pnummer].hentfdato()<<endl; 
	cout << "Klasse: " << nyelever[pnummer].hentklasse() << endl;
	cout << "Fag: " << nyelever[pnummer].hentfag() << " Karakter: " <<nyelever[pnummer].hentkarakter() <<endl; 
	cout << "Merknad: " << nyelever[pnummer].hentmerknad() << endl << endl;	
	system("pause");
	}
}

void Skrivtilfil(vector<Personalia>& nyelever){
	
	ofstream Utfil;

	Utfil.open("elever.txt");

	unsigned int antall = nyelever.size();
	for(unsigned int i = 0; i < antall; i++){

	Utfil << nyelever[i].hentelevnavn() << endl;
	Utfil << nyelever[i].hentklasse() << endl; 
	Utfil << nyelever[i].hentfag() << endl;
	Utfil << nyelever[i].hentmerknad() << endl;
	Utfil << nyelever[i].hentansattnummer() << " ";
	Utfil << nyelever[i].hentfdato() << " "; 
	Utfil << nyelever[i].hentkarakter() << " ";
	
	}
}

void Lesfrafil(vector<Personalia>& nyelever){
	
	string elevnavn;
	string klasse;
	string fag;
	string merknad;
	int ansattnummer;
	int fdato;
	double karakter;
	int teller=0;

	ifstream Infil;
	Infil.open("elever.txt");

	if(Infil.fail()) {
		cerr << "Kan ikke åpne fil." << endl;
		exit(1);
	}

	while(!Infil.eof()){
		
	getline(Infil, elevnavn);
	getline(Infil, klasse);
	getline(Infil, fag);
	getline(Infil, merknad);
	Infil >> ansattnummer >> fdato >> karakter;
	
Personalia nyPersonalia(elevnavn, klasse, ansattnummer, fdato, fag, karakter, merknad);
nyelever.push_back(nyPersonalia);
teller++;
}

	nyelever.erase(nyelever.begin()+teller-1);
}

void Slett(vector<Personalia>& nyelever){
	
	system("cls");

	int teller;
	int pnummer;
	char valg;

	unsigned int antall = nyelever.size();



	system("cls");
	teller=0;

	for(unsigned int i = 0; i < antall; i++){
		cout << teller << "." << nyelever[i].hentelevnavn() << endl;
		teller++;
	}
	cout << endl;

Erase:

	cout << "Skriv inn nummeret informasjonen du vil slette: " << endl;
	cin >> pnummer;

	if(pnummer >= teller){
		cout << endl << "Ugyldig valg! " << endl << endl;
		goto Erase;
	}
	else if(pnummer < teller){

		cout << "Er du sikker på at du vil slette: " << nyelever[pnummer].hentelevnavn() << " (j/n) ? " << endl;
		cin >> valg;
		if(valg == 'j' || valg == 'J' ){ 
			nyelever.erase(nyelever.begin() +pnummer);
			cout << "Informasjonen er slettet!" << endl;

		}
		else
			cout << "Informasjon ikke slettet." << endl;
	}
	system("pause");



}

void Info(vector<Personalia>& nyelever){

	system("cls");

	cout << endl;

	cout << "Informasjon om programmet: " << endl << endl;

	cout << "Dette programmet er ment som et hjelpemiddel for lærere. " << endl; 
	cout << "Her kan du legge til elever og informasjon om elevene. " << endl;
	cout << "Informasjonen blir arkivert og kan igjen brukes når du kjører programmet" << endl;
	cout << "All informasjon kan alterneres og slettes hvis du ønsker. " << endl << endl;

	system("pause");
	

}



My class:
#include "header.h"

Personalia::Personalia() {
	
	string nyelevnavn;
	string nyklasse;
	string nyfag;
	string nymerknad;
	nyansattnummer=0;
	nyfdato = 0;
	nykarakter=0.0;
	

}

Personalia::Personalia(string elevnavn, int ansattnummer, int fdato, string klasse ,string fag, double karakter, string merknad) {
	nyelevnavn = elevnavn;
	nyansattnummer = ansattnummer;
	nyfdato = fdato;
	nyklasse = klasse;
	nyfag = fag;
	nykarakter = karakter;
	nymerknad  = merknad;
}

Personalia::~Personalia() {

}
string Personalia::hentelevnavn() const {
	return nyelevnavn;
}

int Personalia::hentansattnummer() const {
	return nyansattnummer;
}

int Personalia::hentfdato() const {
	return nyfdato;
}
string Personalia::hentklasse() const {
	return nyklasse;
}

string Personalia::hentfag() const {
	return nyfag;
}

double Personalia::hentkarakter() const {
	return nykarakter;
}

string Personalia::hentmerknad() const {
	return nymerknad;
}



void Personalia::settelevnavn(string elevnavn) {
	nyelevnavn = elevnavn;
}

void Personalia::settansattnummer(int ansattnummer) {
	nyansattnummer = ansattnummer;
}

void Personalia::settfdato(int fdato) {
	nyfdato = fdato;
}

void Personalia::settklasse(string klasse) {
	nyklasse = klasse;
}



void Personalia::settfag(string fag) {
	nyfag = fag;
}

void Personalia::settkarakter(double karakter) {
	nykarakter = karakter;
}

void Personalia::settmerknad(string merknad) {
	nymerknad = merknad;
}




My header:


#include <iostream>
#include <string>

using namespace std;

#ifndef Personalia_H
#define Personalia_H

class Personalia {
public:
	Personalia();
	Personalia(string, int, int, string, string, double, string);
	~Personalia();

	string hentelevnavn() const;
	int hentansattnummer() const;
	int hentfdato() const;
	string hentklasse() const;
	string hentfag() const;
	double hentkarakter() const;
	string hentmerknad() const;
	
	void settelevnavn(string);
	void settansattnummer(int);
	void settfdato(int); 
	void settklasse(string);
	void settfag(string);
	void settkarakter(double);
	void settmerknad(string);
	
private:
	string nyelevnavn;
	int nyansattnummer;
	int nyfdato;
	string nyklasse; 
	string nyfag;
	double nykarakter;
	string nymerknad;
};
#endif



Is This A Good Question/Topic? 0
  • +

Replies To: cannot convert param. from 'std::string' to 'int'

#2 Skydiver  Icon User is online

  • Code herder
  • member icon

Reputation: 3630
  • View blog
  • Posts: 11,325
  • Joined: 05-May 12

Re: cannot convert param. from 'std::string' to 'int'

Posted 19 April 2013 - 06:31 AM

So why not make klasse an int, and use the >> operator to read in an int, instead of using getline()?
Was This Post Helpful? 0
  • +
  • -

#3 simonoid  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 19-April 13

Re: cannot convert param. from 'std::string' to 'int'

Posted 19 April 2013 - 09:00 AM

Found it the fault lies here: Personalia(string, int, int, string, string, double, string);

wrote int instead of string.

Thank you for the reply though :)
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1