2012-01-03 17 views
-4

MVS2010で単純なコードを作成しましたが、動作しません。ヘッダーファイルC++、戻り値の悪いタイプ

ヘッダーファイルとメインのクラスがあります。

あなたは何が間違っているか教えてください。

メイン:

#include <iostream> 
#include "Developer.h" 


int main() { 

    Developer xx("asd", "sfdasdf", "asdsa"); 
    std::cout << xx.Dev_ID; 
    char c; 
    std::cin >> c; 
    return 0; 
} 

ヘッダー:

class Developer { 
public: 
    char * Dev_ID; 
    char * Dev_Name; 
    char * ApplicationType; 
    char * Name_Application; 

public: 
    Developer(char * name, char * appType, char * appName); 
    void create(); 
    void edit(); 
    void remove(); 
}; 

クラス:

#include "Developer.h" 

Developer::Developer(char * name, char * appType, char * appName){} 
void Developer::create(){} 
void Developer::edit(){} 
void Developer::remove(){} 
+2

'Developer'クラスの後にセミコロンがないと思います。 – Mysticial

+4

-1:何が間違っているかを明示的に述べないと(コンパイラエラーや予期しない出力)、質問に答えにくいです。複数のコードファイルでは問題を再現することが難しく、インクルード行の後ろにある ';'のためにコードはコンパイルされません。 – thiton

+0

はい私は知っています、ごめんなさい – ruhungry

答えて

1

私は私のアプリを実行すると、それは未処理の例外とクラッシュを与える...もちろん

それがありません。あなたのコンストラクタは、メンバ変数のどれかを埋めていません。したがってxx.Dev_IDは未定義です。それはランダムなゴミを含んでいます。 std::coutランダムなゴミをしようとすると、プログラムが正しくクラッシュします。

おそらくDev_IDをある値に初期化するつもりです。あなたはコンストラクタでそれを行う必要があります。これが、のコンストラクタである:メンバ変数の初期化です。

Chethanが述べたように、基本的なC++の本を調べる必要があります。

+0

ええ、私はそれを忘れてしまった...ありがとう:) – ruhungry

4
  1. あなたはセミコロンを追加する必要があります ';'クラス定義の後に
  2. メンバー関数の定義は、returnType ClassName::FunctionName(args)の形式である必要があります。

    void Developer::create(){} 
    void Developer::edit(){} 
    void Developer::remove(){} 
    
  3. また、#includeディレクティブの後にセミカラーを指定する必要はありません。 C++の基本的な本を読んで、その例を試してみてください。

+0

私は自分のコードと私の投稿を編集しましたが、それでも動作しません。私は私のアプリケーションを実行すると、処理されない例外とクラッシュを与えます... – ruhungry

+1

@Whiteangel:クラスオブジェクト内に完全に初期化されていないポインタがたくさんあるので、 'std :: cout'にストリーミングして逆参照しようとします。 。 –

関連する問題