0

私のコーディングでは、getおよびsetname関数を除いてすべてが機能します。getNameを呼び出すと、空白で印刷されます。私はいくつかの異なる解決策を試しましたが、実際に機能したのは、fullName文字列をmain内に保存し、そこから呼び出すことだけです。変数はプライベートであるため、変数を呼び出せないようです。

これが私の.cppファイルです。

#ifndef STUDENT_H
#define STUDENT_H
#include <iostream>
#include <string>

#include "Student.h"

using namespace std;

int main()
{
    //for student name
    string firstName;
    string lastName;
    string fullName;


//student name

cout << "Please enter your students first name" << endl;
cin >> firstName;
cout << "firstName = " << firstName << endl;


cout << "Please enter your students last name" << endl;
cin >> lastName;
cout << "lastName = " << lastName << endl;

aStudent.setName(firstName, lastName);
fullName = aStudent.getName();

cout << "Your students name is : ";
cout << fullName << endl;

}
#endif

これが私の関数とクラスの.hファイルです。

#include <iostream>
#include <string>
#include <conio.h>

using namespace std;
class Student
{

private:
string fName;
string lName; 

public:
string getName();
void setName(string firstName, string lastName);

};

string Student::getName()
{
return fName + " " + lName;
}
void Student::setName(std::string firstName, std::string lastName)
{
firstName = fName;
lastName = lName;
}
4

2 に答える 2

8
void Student::setName(std::string firstName, std::string lastName)
{
    firstName = fName;
    lastName = lName;
}

確かにそこに問題があります。ヒント、割り当ては右側のものを左側のものにコピーします。

于 2012-08-12T07:29:32.050 に答える
2
void Student::setName(std::string firstName, std::string lastName)
{
    firstName = fName; // you're assigning the local firstName to your class instance's
    lastName = lName;  // variable; reverse this and try again
}

// ...
void Student::setName(std::string firstName, std::string lastName)
{
    fName = firstName;
    lName = lastName;
}
于 2012-08-12T07:30:04.667 に答える