Сбой программы при попытке работать с вектором-членом класса

Привет, я перепробовал все, что мог придумать, чтобы исправить сбой... но не смог. добраться куда угодно. Итак, я попытаюсь вставить основные компоненты программы, так что, возможно, кто-то может помочь с этим ... программа компилируется без ошибок, но она падает. Если я запускаю программу, выберите сначала вариант «1», а затем введите входные данные... когда она доберется до части , сохраните , она просто вылетит. Некоторые части кода закомментированы, потому что я пытался найти причину сбоя. Если я что-то забыл или вам нужны другие детали, пожалуйста, спросите ИЗВИНИТЕ за длинный код. Основная функция и класс приложения:

#include "Catalog.h"
#include "UIconsole.h"
#include "StudentRepository.h"
#include "StudentValidator.h"


using namespace std;

class Application{
private:
    StudentRepository *stre;
    StudentValidator *stvl;
    Catalog *cat;
    UIconsole *ui;    
public:
    Application();
    ~Application();
    void run();
};    
int main(){
    Application app;
    app.run();
    return 0;
}    
Application::Application(){
    StudentRepository stre();
    StudentValidator stvl();
    Catalog cat();
    UIconsole ui();
}    
Application::~Application(){
}
void Application::run(){
    ui->runUI();
}

UIconsole.h (где выбраны входные данные):

class UIconsole{
public:
    UIconsole(Catalog *catalog):catalog(catalog){};
    void runUI();

private:
    Catalog *catalog;

    void showMenu();
    int getOption();

    void addStudent();

UIconsole.cpp

int inp;
do{
    showMenu();
    inp = getOption();
    switch(inp){
    case 0: break;
    case 1: addStudent();break;
    }while(inp != 0);
}

void UIconsole::addStudent(){
    string name;
    int id,gr;
    cout<<"Name: ";
    cin>>name;
    cout<<"ID: ";
    cin>>id; cout<<endl;
    cout<<"Group: ";
    cin>>gr; cout<<endl;

    catalog->addNewStudent(name,id,gr);
//  try {
//      catalog->addNewStudent(n,id,gr);
//      cout<<"Student has been added!"<<endl;
//  } catch (Exception &ex) {
//      cout<<"Student HASN'T been added"<<ex.getMsg()<<endl;
//  }

}

каталог.cpp:

void Catalog::addNewStudent(string name, int id, int gr){
Student st(name, id,gr);
//StudentValidator.
studRepo.save(st);

}

studentRepo.cpp:

void StudentRepository::save(Student A){
    string B;
    int check;
    B = A.getName();
//  check = findByName(B);
//
//  if(check != 0){
        students.push_back(Student(A));
//  }
//  else{
//      throw RepoException("Name already exist in the database!");
//  }
}

studentRepo.h

class StudentRepository{
private:
    vector <Student> students;
public:
    vector <Student> getAll();
    void save(Student);
    void edit(Student);
    void delByName(string);
    void searchById();

    int findByName(string name);

    ~StudentRepository();

};

Трассировка:

    Dr. Memory version 1.4.6 build 2 built on Mar  7 2012 10:14:04
Application cmdline: ""D:\c++\Begin\L_6-8\Debug\L_6-8.exe""
Recorded 62 suppression(s) from default C:\Program Files (x86)\Dr. Memory/bin/suppress-default.txt

Error #1: UNINITIALIZED READ: reading register eax
# 0 _fu36___ZSt4cout                 [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:90]
# 1 UIconsole::runUI()               [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:19]
# 2 Application::run()               [D:\c++\Begin\L_6-8\Debug/../App.cpp:43]
# 3 main                             [D:\c++\Begin\L_6-8\Debug/../App.cpp:27]
Note: @0:00:10.842 in thread 5436
Note: instruction: mov    (%eax) -> %eax

Error #2: UNADDRESSABLE ACCESS: reading 0x00000004-0x00000008 4 byte(s)
# 0 std::vector<>::push_back()               [c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/bits/stl_vector.h:828]
# 1 StudentRepository::save()                [D:\c++\Begin\L_6-8\Debug/../StudentRepository.cpp:27]
# 2 Catalog::addNewStudent()                 [D:\c++\Begin\L_6-8\Debug/../Catalog.cpp:7]
# 3 _fu36___ZSt4cout                         [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:90]
# 4 UIconsole::runUI()                       [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:19]
# 5 Application::run()                       [D:\c++\Begin\L_6-8\Debug/../App.cpp:43]
# 6 main                                     [D:\c++\Begin\L_6-8\Debug/../App.cpp:27]
Note: @0:00:10.853 in thread 5436
Note: instruction: mov    0x04(%eax) -> %edx

Error #3: LEAK 21 direct bytes 0x006ff488-0x006ff49d + 0 indirect bytes
# 0 libstdc++-6.dll!Znwj           
# 1 libstdc++-6.dll!ZNSs7reserveEj 
# 2 libstdc++-6.dll!ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E
# 3 _fu2___ZSt3cin                                                             [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:81]
# 4 UIconsole::runUI()                                                         [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:19]
# 5 Application::run()                                                         [D:\c++\Begin\L_6-8\Debug/../App.cpp:43]
# 6 main                                                                       [D:\c++\Begin\L_6-8\Debug/../App.cpp:27]

DUPLICATE ERROR COUNTS:

SUPPRESSIONS USED:

ERRORS FOUND:
      1 unique,     1 total unaddressable access(es)
      1 unique,     1 total uninitialized access(es)
      0 unique,     0 total invalid heap argument(s)
      0 unique,     0 total warning(s)
      1 unique,     1 total,     21 byte(s) of leak(s)
      0 unique,     0 total,      0 byte(s) of possible leak(s)
ERRORS IGNORED:
     84 still-reachable allocation(s)
         (re-run with "-show_reachable" for details)
Details: C:\Users\Warzaru\AppData\Roaming/Dr. Memory/DrMemory-L_6-8.exe.8092.000/results.txt
0
задан Bogdan M. 15 May 2012 в 13:03
поделиться