ヘッダファイル無しでいきたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
山下

ヘッダファイル無しでいきたい

#1

投稿記事 by 山下 » 17年前

山下と申します。皆さんのお知恵におすがりしたく参りました。

XPとVCC2008を使っております。

プログラムを複数のCPPファイルだけで構成して作ろうと考えています。
クラスがどんなメンバを持っているかをヘッダファイルに書いて、
実際の動作を他のCPPファイルに書くというのがどうにも面倒で、
クラスの概要も動作も同じCPPファイルに書きたいと思っております。

実際に3つのCPPファイルだけで書いてビルドしたところ、
「定義されていない識別子です」というエラーが山ほど出てきました。
最初にメイン関数のあるファイルからビルドしてしまい、
他のファイルで定義されているクラスが「定義されていない」ことになってしまいます。

クラスの宣言や動作をヘッダファイルとCPPファイルに分けたりせず、
複数のCPPファイルだけでプログラムを書く方法はあるのでしょうか。
どうか教えていただきたいと思います。

ibis

Re:ヘッダファイル無しでいきたい

#2

投稿記事 by ibis » 17年前

cppだけだと非常にややこしいです。
まぁできないことはないですが。
1つのcppと複数のhでなら簡単ですよ。
例えば以下のように。
//class1.h
class Class1{
    public:
        int function(void){
            return 1;
        }
};


//class2.h
class Class2{
    public:
        int function(void);
};
int Class2::function(void){
    return 2;
}


//main.h
#include <iostream>
#include "class1.h"
#include "class2.h"
int main(void){
    Class1 class1;
    Class2 class2;
    std::cout << class1.function();
    std::cout << class2.function();
    return 0;
}

たかぎ

Re:ヘッダファイル無しでいきたい

#3

投稿記事 by たかぎ » 17年前

必ずしもよい方法ではありませんが...
// a.cpp
#include "b.cpp"
#include "c.cpp"
のように、リンクではなくインクルードで解決すれば何とかなります。
もう少し現実的な方法としては、インクルードされる側のファイルは、.cppではなく.hppにでもしておいて、関数や非局所オブジェクトの定義はテンプレートかインライン関数だけにするのもよいでしょ。

山下

Re:ヘッダファイル無しでいきたい

#4

投稿記事 by 山下 » 17年前

たかぎさん、返信誠にありがとうございます。

最初に教えていただいた方法で私のやりたい事が実現できました。
ヘッダファイルにはクラスの動作は書けないと思い込んでいたので、
CPPファイルに書くことに固執していたようでした。
基本的なことでお恥ずかしいです。

これで先に進むことができます。本当にありがとうございました。

たかぎ

Re:ヘッダファイル無しでいきたい

#5

投稿記事 by たかぎ » 17年前

実現はできますが、必ずしも[color=yellow>よい方法ではない[/color]ので要注意です。

閉鎖

“C言語何でも質問掲示板” へ戻る