独自のクラスの作成と使用方法について – プログラミング – Home

独自のクラスの作成と使用方法について
 
通知
すべてクリア

[解決済] 独自のクラスの作成と使用方法について


DIQ
 DIQ
(@DIQ)
ゲスト
結合: 22年前
投稿: 8
Topic starter  

はじめまして
すごい初心者なんで、質問内容も初心的なものですいません
現在、あるプロジェクトの開発前なんですが、先に、共通に使えるクラスを作成すると言う依頼
が発生し、実は、ほとんど、++部分は弄っていなかったんで、共通に使用できるクラスと
いうのがわかりません。
そこで、A構造体とB関数の持ったクラスを作りたいのですが、
とりあえず、ネットで調べながら、「ClassView」に新規クラスを作成することができました。
「Publicに書くらしい」と言うこともわかりました。
コントラスタ
デストラクタもなんとなくわかりました。
パブリック内にA構造体とB関数を書いて、そのプロジェクト内で一応使えるのですが、それを、
他のプロジェクトで使用する方法と、外に出す(?)方法がわかりません。

どうか御教授願います


引用未解決
トピックタグ
JUN2
 JUN2
(@JUN2)
ゲスト
結合: 23年前
投稿: 8
 

>他のプロジェクトで使用する方法
普通に、作ったソースとヘッダーを他のプロジェクトに追加して
ビルドすればいいのでは。

質問の意味からの回答はこれが限界。
DLL化?

>外に出す(?)方法がわかりません。
グローバル化?(++知らなくても分かるから違うかな)


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

Lib の作成のこと?

・・・C++じゃなくてもできるな。これも違うか。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

質問です

「JUN2 さん」のお話を元に以下の例題ソース書いてみました
完全なものではありませんが (結構変なとこといっぱいあるかも? ^^;)
ですが
A.EXEとB.EXEで共通して Class XXXが使用されていること
は分かっていただけますでしょうか

あなたのソースファイル構成は どのように成ってますか?

「ヘッダ 用 ソースファイル」
をファイルビューの外部依存ファイルとして指定し
A.EXEとB.EXEのそれぞれのプロジェクト
へ追加して

共通用 DLLをビルドしたときできた 「LIB」
をA.EXEとB.EXEのそれぞれのプロジェクトの
リンクライブラリに追加してあげれば
やりたいことは出来ると思いますが?

------------------------------------------------------------------
ヘッダ 用 ソースファイル(ファイル名: XXX.h )
 
#include <DDDDD>
#include <EEEEE>
#include <FFFFF>

class AFX_EXT_CLASS XXX
{
public:
 struct A [
]

 struct b [
]

XXX();
~XXX();
 GetSrta()
]
--------------------------------------------------------------------
ソースファイル 3  これは共通用 DLL

#include xxx.h    <-ここが格ソース共通で記述される

extern C int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// lpReserved を使う場合はここを削除してください
UNREFERENCED_PARAMETER(lpReserved);

if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0(SSMCORE.DLL Initializing!\n);

// 拡張 DLL を1回だけ初期化します。
if (!AfxInitExtensionModule(SSMCOREDLL, hInstance))
return 0;
new CDynLinkLibrary(SSMCOREDLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0(SSMCORE.DLL Terminating!\n);
// デストラクタが呼び出される前にライブラリを終了します
AfxTermExtensionModule(SSMCOREDLL);
}
return 1; // ok
}

ここから下に共通関数書く
XXX::XXX()
[
]
XXX::~XXX()
{
}
XXX::GetSrta()
[
たとえば構造体 A を元に何か処理する
]
-------------------------------------------------------------------
-------------------------------------------------------------------
ソースファイル 1 これは実行用  A.EXE 用

#include xxx.h    <-ここが格ソース共通で記述される

void main(void)
[
class XXX;
 XXX.GetSrta();

A.EXE用処理
  
]

-------------------------------------------------------------------
ソースファイル 2 これは実行用  B.EXE 用

#include xxx.h    <-ここが格ソース共通で記述される

void main(void)
[
class XXX;
 XXX.GetSrta();
B.EXE用処理
]


返信引用
DIQ
 DIQ
(@DIQ)
ゲスト
結合: 22年前
投稿: 8
Topic starter  

御返答ありがとうございます
よくわからないのですが、クラスを作成し、そのヘッダーファイルを他のプログラムで使
い、#includeで指定すると使えるようになりますか?

昨日ネットで調べた感じでは、DLLを作るみたいなことがかいてあったんですが…(あと、
#include stdafx.hを参照に行ってしまう…とか)DLLは作らなくても平気ですか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

ライブラリの作り方について学習してください。

> よくわからないのですが、クラスを作成し、そのヘッダーファイルを
> 他のプログラムで使い、#includeで指定すると使えるようになりますか?

コンパイルまでは通るでしょうが、ライブラリをリンクしないとリンク・エラー
になります。

> 昨日ネットで調べた感じでは、DLLを作るみたいなことがかいてあったんですが…
> DLLは作らなくても平気ですか?

DLLもライブラリの一種です。

> (あと、#include stdafx.hを参照に行ってしまう…とか)

#include stdafx.h がライブラリ・ヘッダにあるからです。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

> #include stdafx.h がライブラリ・ヘッダにあるからです。

失礼。正しくは:
#include stdafx.h がライブラリ・コードのどこかにあるからです。


返信引用
DIQ
 DIQ
(@DIQ)
ゲスト
結合: 22年前
投稿: 8
Topic starter  

ありがとうございました。
なんとかできました。
(人のHP参照)スタティックライブラリを作成して、それを別のプロジェクトで、ヘッダー、ラ
イブラリを参照して、XXX.関数(1)とかって記述で使えることもわかりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました