2015-04-16 4 views
-3

Как инициализировать переменные-члены в следующем коде?Инициализация членов Struct

#include <string> 
#include <iostream> 
using namespace std; 
int main() 
{ 
    typedef struct Employee{ 
     char firstName[56]; 
     char lastName[56]; 
    }; 

    typedef struct Company { 
     int id; 
     char title[256]; 
     char summary[2048]; 
     int numberOfEmployees; 
     Employee *employees; 
    }; 

    typedef struct Companies{ 
     Company *arr; 
     int numberOfCompanies; 
    }; 
} 
+0

если это не гр Структуры, вы может добавить конструктор – SHR

+0

Используйте ctor и избавьтесь от 'typedef' - они не делают вам ничего хорошего. Определение 'struct' внутри' main' довольно необычно. О, и вы обычно хотите 'std: string' вместо' 'char foo [xxx];'. –

+0

Это часть более крупного проекта (где у меня есть класс). Также я буду менять char на строку. – Fotis455

ответ

1

Вы можете добавить конструктор, как это:

struct Employee{ 
     char firstName[56]; 
     char lastName[56]; 

     Employee() //name the function as the struct name, no return value. 
     { 
      firstName[0] = '\0'; 
      lastName[0] = '\0'; 
     } 
}; 
0

первый: и использовать ЬурейиЙ в неправильном

typedef struct Employee{ 
    char firstName[56]; 
    char lastName[56]; 
}; 

вам нужно другое имя для ЬурейиХ

typedef struct _Employee{ 
     char firstName[56]; 
     char lastName[56]; 
    }Employee; 

, но поскольку вы используете C++ typedef не требуется.

Во-вторых: не объявляйте структуры внутри функции. Заявить их снаружи основного.

Третье: использовать конструкторов для инициализации пользователей по умолчанию значения, например:

struct Employee{ 
    Employee() 
    { 
     strcpy (firstName, ""); //empty string 
     strcpy (lastName, "asdasd"); // some value, every object now by default has this value 
    } 
     char firstName[56]; 
     char lastName[56]; 
    }; 

четвёртые: использование станда :: строка класса (#include) для облегчения обработки

пятой строки: считают type class вместо struct, единственная разница между этими двумя, заключается в том, что класс объявляет переменные как частные по умолчанию (вы можете изменить видимость переменной urself), а struct объявляет их общедоступными по умолчанию.

0

Как вы уже используете std::string, как указано из #include заявления, вы должны изменить свои объявления классы следующим образом (и сделать это за пределами main() функций организма):

struct Employee { 
    std::string firstName; 
    std::string lastName; 
}; 
typedef struct Company { 
    int id; 
    std::string title; 
    std::string summary; 
    int numberOfEmployees; 
    Employee *employees; 
}; 
typedef struct Companies{ 
    Company *arr; 
    int numberOfCompanies; 
}; 
+0

Как я уже сказал, я изменю его. Также он является частью более крупного проекта, где у меня его нет в main.For теперь, все, что я хочу, это помочь мне инициализировать эти переменные. – Fotis455

Смежные вопросы