Bíborkékhóvirág Creative Commons License 2006.10.31 0 0 642
Sziasztok!

Az alábbi feladat megoldásához kérek megoldást teljesen kezdőként! Még csak most kezdtem el tanulni a programozást, és a könyvemben van egy ilyen feladat, de sehogy sem sikerül megoldanom. Próbáltam a neten és máshol is utánanézni, hogy a constructor-ban hogy lehet több paramétert megadni, de igazából sehol sem találtam ilyen vonatkozású példát (mindenhol csak egy paraméterről írnak).

A feladat a következő: van egy osztálynapló (GradeBook), ehhez van egy class készítve, és ezt három fájlra osztottuk: gradebook.h (fejrészfájl), function.cpp (a fejrészfájlhoz tartozó member function-öket tartalmazza) és gradebook.cpp (ez a main függvényt tartalmazza. Most ezeket kellenne módosítani az alábbiak szerint:
1. Include a second string data member that represents the course instructor's name.
2. Provide a set function to change the instructor's name and a get function to retrieve it.
3. Modify the constructor to specify two parametersone for the course name and one for the instructor's name.
4. Modify member function displayMessage such that it first outputs the welcome message and course name, then outputs "This course is presented by: " followed by the instructor's name.
5. Use your modified class in a test program that demonstrates the class's new capabilities.

A gradebook.h fájl a következő:
#include <string>
using std::string;
class GradeBook
{
public:
GradeBook( string );
void setCourseName( string );
string getCourseName();
void displayMessage();
private:
string courseName;
};


A function.cpp fájl a következő:
#include <iostream>
using std::cout;
using std::endl;
#include "GradeBook.h"
GradeBook::GradeBook( string name )
{
setCourseName( name );
}
void GradeBook::setCourseName( string name )
{
courseName = name;
}
string GradeBook::getCourseName()
{
return courseName;
}
void GradeBook::displayMessage()
{
cout << "Welcome to the grade book forn" << getCourseName() << "!" << endl;
}


A gradebook.cpp fájl a következő:
#include <iostream>
using std::cout;
using std::endl;
#include "GradeBook.h"
int main()
{
GradeBook gradeBook1( "CS101 Introduction to C++ Programming" );
GradeBook gradeBook2( "CS102 Data Structures in C++" );
cout << "gradeBook1 created for course: " << gradeBook1.getCourseName() << "ngradeBook2 created for course: " << gradeBook2.getCourseName() << endl;
return 0;
}


A paraméterek megadása sikerült a constructor-hoz és ehhez a set és get function-t is meg tudtam írni, sőt ennél a két módosított fájlnál a compile is hibátlanul lefut.
De a main függvényt tartalmazó fájlnál a következő hibaüzenetet kapom, és nem tudok rájönni, hogy mit kellene módosítanom:
error C2664: '__thiscall GradeBook::GradeBook(const class GradeBook &)' : cannot convert parameter 1 from 'char [41]' to 'const class GradeBook &' Reason: cannot convert from 'char [41]' to 'const class GradeBook'
No constructor could take the source type, or constructor overload resolution was ambiguous.

Az lenne a kérésem, hogy ha tudtok segíteni, akkor a módosítást a set és get funkcióval tegyétek meg, mert más megoldást én is találtam rá, csak ilyen fajtát nem.

Előre is köszönöm a segítséget.

Egy jelenleg kevésbé lelkes kezdő programozó.