私は現在、同じクラスを定義する2つの異なるヘッダを持っています。それらの間のどのような変更は、関数の実装と単一の変数です。テンプレート機能付きクロスプラットフォームクラス
header_linux.h
class Class
{
private:
QStringList processesList; // Same variable
pid_t pid; // Different variable
public:
void fillProcessesList()
{
// Different implementation
}
void isProcessRunning(QString name)
{
// Same implementation
}
template<typename T>
bool readMemory(unsigned long long address, T &destination)
{
// Different implementation
}
header_win32.h
class Class
{
private:
QStringList processesList; // Same variable
HANDLE handle; // Different variable
public:
void fillProcessesList()
{
// Different implementation
}
void isProcessRunning(QString name)
{
// Same implementation
}
template<typename T>
bool readMemory(unsigned long long address, T &destination)
{
// Different implementation
}
私は、単一のファイルに共通の変数と関数を持っていると思います。
私の考えは、OS-を実装する一般的な機能と、その後header_linux.cppとheader_win32.cppを実装がheader.hクラスとそのメンバを定義し、header.cppを作成することでした具体的な機能
ただし、テンプレート関数はヘッダーファイルに実装する必要があります。
私は、プリプロセッサマクロを使ってオペレーティングシステムをチェックし、正しい実装を1つのヘッダーで使用することができますが、関数は多く、ボディは大きくなっています。
多くの研究の後、私はPIMPLイディオムを見つけましたが、実装は複雑に思えます。
良い方法がありますか?
最初の数センテンスを読んだ後、「ピンプル」は私の頭に浮かんだ最初の考えでした。 –
OS固有のものを**非**汎用関数にラップして、それとインターフェースする必要があります。私が知る限り、OSはテンプレート –
***を実装していませんが、実装は複雑です。***間違ったソースを読んでいる必要があります。 PIMPLを使用すると、(少なくとも私にとっては)合併症はごくわずかです。私は1980年代初め以来プログラミングしてきましたが。 – drescherjm