Почему компилятор запрашивает инициализатор перед конструктором класса? - PullRequest
0 голосов
/ 22 октября 2011

Я создаю класс с именем 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);

Может кто-нибудь объяснить мне, почему я получаю ошибку?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 22 октября 2011

Если в вашем коде действительно есть эта строка, вы, вероятно, скопировали конструктор дважды:

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 ){

Компилятор жалуется на список инициализаторов, потому что именно это должно следовать за заголовком, а не другой копией списка параметров.

1 голос
/ 22 октября 2011

Вы можете выполнить некоторую инициализацию в списке инициализации конструктора и выполнить остальную инициализацию в теле конструктора .

SelectionPage::SelectionPage(
  int newPoints, 
  string newManager, 
  string newLoginName, 
  string MemberFile)
  : points(newPoints)
  , manager(newManager)
  , loginName(newLoginName)
  , memberList(MemberFile)
{
  // do the rest initialization here
}
1 голос
/ 22 октября 2011

попробуйте добавить спецификатор доступа перед SelectionPage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...