2016-10-17 37 views
-9

私は新しいC++ですので、この質問をすることを許してください。私はプロジェクトを作成して初めて実行しました。成功しています。しかし、私は別のプロジェクトを開始し、私はそれに4つのクラスを追加した(あなたはタブから見ることができます)、main.cppは実行できません。コードが両方のプロジェクトでまったく同じであるので、私は混乱しています。成功C++ビルドは成功しましたが、失敗しました。

ラン: Success

ビルド成功したが、実行に失敗しました: Run Failed

この問題を解決するための解決策は何ですか?

すべてのクラスのコードを投稿する必要がありますか?

#ifndef CLSSTUDENT_H 
    #define CLSSTUDENT_H 
    #include <string> 
    #include <iostream> 

    using namespace std; 

    class clsStudent { 

    protected: 
     string name; 
     string student_no; 
     string program; 

    public: 
     clsStudent(string n, string sn,string prog); 
     virtual void displayStudentDetails(); 



}; 

student.cpp私は新しいプロジェクトを開くとのみ、このクラスを追加

#include "TutorialClass.h" 

void TutorialClass::addStudent(clsStudent std) 
{ 

    _students.push_back(std); 


} 

int TutorialClass::getStudentCount() 
{ 

    return _students.size(); 


} 

void TutorialClass::display() 
{ 


} 
#endif /* CLSSTUDENT_H */ 

student.h(8つのファイルがあります)。それも実行することはできません。コードの問題は何ですか?

+5

いいえ、すべてのクラスではなく、[mcve]のみです。 –

答えて

0

あなたのプログラムは、他のファイルとコンパイルされている場合にのみ実行できないようです。これらのファイルでは、を実行中のバグのあるコードがあり、main()が実行される前に賭けています。

これは、このような場合に発生することができます

int f() { 
    throw; // bam! Uncaught exception; 
} 

int x = f(); // this runs before main() 

またはこの:どちらの場合も

class C { 
    C() { 
     cout << "This runs before main() too!" << endl; 
    } 
}; 

C my_c; // calls constructor 

:コードがmain()前に実行されました。これは、main()を実行する前にグローバル変数を初期化する必要があるためです。この初期化コードがsegfaultまたはexit()コールを介してプログラムをクラッシュさせたり、捕捉されていない例外を投げたりすると、実行するチャンスが得られるまでにクラッシュしたプログラムがあります。

関連する問題