2015-12-05 100 views
0

下午好!C++重複類類型的定義?

對不起,如果問題看起來比較模糊,但這裏有一些(不完整)代碼的某些上下文。具體來說,這是關於實現文件中的UserInfo :: setUserInfo()和UserInfo :: displayProfile()函數中看到的「UserInfo inputInfo」定義部分。

project02.cpp(執行文件)

#include <iostream> 
#include "project02.h" 

using namespace std; 

void UserInfo::setUserInfo() 
{ 
    UserInfo inputInfo; 
    string fName; 
    string lName; 
    int bYear; 
    string city; 
    string occupation; 

    cout << "Please enter your first name: "; 
    cin >> fName; 
    inputInfo.setFirstName(fName); 

    cout << "Please enter your last name: "; 
    cin >> lName; 
    inputInfo.setLastName(lName); 

    cout << "You are now registered as: " << inputInfo.getFirstName() << " " << inputInfo.getLastName(); 
} 

void UserInfo::displayProfile() 
{ 
    UserInfo inputInfo; 
    cout << "Profile Information:" << endl; 
    cout << "Name: " << inputInfo.getFirstName() << " " << inputInfo.getLastName(); 
} 

void UserInfo::setFirstName(string fName) 
{ 
    _firstName = fName; 
} 

string UserInfo::getFirstName() 
{ 
    return _firstName; 
} 

void UserInfo::setLastName(string lName) 
{ 
    _lastName = lName; 
} 

string UserInfo::getLastName() 
{ 
    return _lastName; 
} 

project02.h(頭文件)

#ifndef PROJECT02_H 
#define PROJECT02_H 

using namespace std; 

class UserInfo 
{ 
    public: 
     string getFirstName(); 
     void setFirstName(string first); 
     string getLastName(); 
     void setLastName(string last); 
     int getBirthYear(); 
     void setBirthYear(int year); 
     string getCurrentCity(); 
     void setCurrentCity(string city); 
     string getOccupation(); 
     void setOccupation(string occ); 
     void setUserInfo(); 
     void displayProfile(); 
    private: 
     string _firstName; 
     string _lastName; 
     int _birthYear; 
     string _currentCity; 
     string _occupation; 

}; 

#endif // PROJECT02_H 

project02main.cpp(主文件)

#include <iostream> 
#include "project02.h" 

using namespace std; 

int main() 
{ 
    UserInfo inputInfo; 
    inputInfo.setUserInfo(); 
    return 0; 
} 

現在的問題是:是否有反覆定義對象「UserInfo inputInfo;」的替代方法每次在實現文件中使用不同的函數?

+0

我不明白。你想在哪裏「重新定義」它? –

+0

對不起,我編輯了這個帖子,使其更加清晰。我的意思是說「反覆定義」,就像你看到我爲兩種功能做過一次一樣。 – BaloneyOs

+0

爲什麼你不只是傳遞userinfo作爲參數? – KostasRim

回答

1

此時不要在該數據類型的方法內創建相同數據類型的對象 - 只需調用setFirstname()和getFirstname()以使用將修改您當前使用的同一對象的方法。

+0

啊,有用,謝謝你!我不知道爲什麼我的教授的例子包括這一點。 – BaloneyOs

+0

這可能是他的一個疏忽 - 發生在我們最好的:) 祝您的項目順利! –