2016-12-20 2 views
1

こんにちは私はC++でCLRアプリケーションを開発しています。数時間の作業の後、私は、異なるファイルにクラスを移動することは、すべてを同じファイルに入れるよりも良いアイデアだと決めました。私は新しいヘッダーファイルと新しいcppファイルを作成しましたが、私はちょっと初心者なので間違ったことがありました。クラス別ファイルC++

これは私のヘッダファイル

#pragma once 

class Show { 
public: 
    void Show::show_all(int num, int id_master, int id_slave, int periferia, int data); 
}; 

私のcppファイル(単純な印刷機能)

#include "Show.h" 
#include <stdio.h> 

class Show{ 
private: 
    void show_all(int num, int id_master, int id_slave, int periferia, int data) { 

    printf("%d\n", num); 
    printf("id of mastra is: %d\n", id_master); 
    printf("id of slave is: %d\n", id_slave); 
    printf("id of device is: %d\n", periferia); 
    printf("in data part %d\n", data); 

    }; 
}; 

メインに、私はこの

Show sh; 

ような何かをやっていると、それで、このような私の機能を呼び出すときに

宣言されていない識別子(私はそれを言及常にとき)
  • 「ショー」:宣言されていない識別子
  • sh.vypis_vsetko(num, id_master, id_slave, periferia, data); 
    

    は、しかし、私は(メイン関数内のすべてを)理解しない多くのエラー

    • 「SP」を取得します
    • '.show_all'の左にはクラス/構造体/共用体が必要です
    • 構文エラー: ';'が見つかりません識別子 'sh'の前に

    私はこれを解決しようとして多くの時間を費やしましたが、結論はありませんでした。 私はどんなアドバイスにも大変感謝しています。クラスなく行われる.cppファイルのクラスメソッドを定義する、最後

    class Show { 
    public: 
    
        void show_all(int num, int id_master, int id_slave, int periferia, int data); 
    }; 
    

    +3

    ここには本当に基本的なエラーがたくさんあります。ヘッダーと実装ファイルの分離についてのチュートリアルをご覧ください。 – AndyG

    +0

    私は興味がありますが、コードはまったく正しいとは言えません。アクセス修飾子を 'public'から' private'に変更したいのはなぜですか? – George

    答えて

    4

    スタータについては、ヘッダーファイルで、クラスメソッドを宣言するメソッド名にクラス名を付けることなく、行われます全く宣言は、:

    void Show::show_all(int num, int id_master, int id_slave, int periferia, int data) { 
    
        printf("%d\n", num); 
    
        // the rest of the code. 
    

    あなたは既に#include Dヘッダーファイルで、クラスを宣言しました。

    +0

    フルクラスの宣言は、その関数の定義から見る必要がありますが、OPが実際にそれを書いたからではありません。 – Quentin

    +0

    ヘッダファイルは '#include'dを取得していますので、それは問題ありません。 –

    +0

    私のコードを修正しようとしましたが、私はまだ同じエラーが発生しています。 –

    関連する問題