2011-10-22 54 views
-1

我正在創建一個名爲SelectionPage的類。基本上是一組菜單。編譯器如何在類構造函數之前請求初始化程序?

然而,當我編譯代碼,編譯器給了我以下錯誤:

g++ C_Main.cpp C_HomePage.cpp C_SelectionPage.cpp C_MemberManagement.cpp -o Project 
C_SelectionPage.cpp:9:104: error: expected initializer before ‘SelectionPage’ 
make: *** [Project] Error 1 

這裏是C_SelectionPage.cpp的前幾行:

#include "H_SelectionPage.h" 


//Constructor for the SelectionPage class 
//It assigns "managing" which decides if the user 
//is a manager or not. 
SelectionPage::SelectionPage(
    int newPoints, 
    string newManager, 
    string newLoginName, 
    string MemberFile) 
     SelectionPage(
      int newPoints, 
      string newManager, 
      string newLoginName, 
      string MemberFile) 
    { 
     points = newPoints; 
     manager = newManager; 
     loginName = newLoginName; 
     flatMemberList.clear(); 
     //Create Object Governing Flat Members. 
     memberList = MemberManagement temp(MemberFile); 
} 

這裏是宣言的頭文件中的構造函數:

SelectionPage(
    int newPoints, 
    string newManager, 
    string newLoginName, 
    string MemberFile); 

有人請向我解釋爲什麼ia m出現錯誤?

在此先感謝。

+3

這是**真的**你在C++文件中有什麼? 'SelectionPage :: SelectionPage(int newPoints,string newManager,string newLoginName,string MemberFile)** SelectionPage **(int newPoints,string newManager,string newLoginName,string MemberFile){? – Mat

回答

3

如果你在你的代碼這行真的,你可能拷貝構造函數兩次:

SelectionPage::SelectionPage(int newPoints, string newManager, string newLoginName, string MemberFile)SelectionPage(int newPoints, string newManager, string newLoginName, string MemberFile){ 

應該是這樣的:

SelectionPage::SelectionPage(int newPoints, string newManager, string newLoginName, string MemberFile){ 

編譯器抱怨初始化程序列表,因爲這是應該遵循標題,而不是參數列表的另一個副本。

+0

我爲我的無知道歉,我應該發現它......但經過一整天的編碼,我想我只是沒有看。非常感謝您指出我的錯誤。 – Synia

1

嘗試SelectionPage

1

前面添加一個訪問說明符可以在構造函數初始化列表執行一些初始化的和做休息初始化中構造體

SelectionPage::SelectionPage(
    int newPoints, 
    string newManager, 
    string newLoginName, 
    string MemberFile) 
    : points(newPoints) 
    , manager(newManager) 
    , loginName(newLoginName) 
    , memberList(MemberFile) 
{ 
    // do the rest initialization here 
} 
相關問題