プロジェクトで2つの異なるライブラリを使用していますが、どちらも基本的な長方形を提供しますstruct
。これに伴う問題は、型間に変換を挿入する方法がないように思われるため、一方のライブラリの関数をもう一方の関数の結果で呼び出すことができないことです。私がこれらのいずれかの作者である場合、外部から変換を作成することはできますが、作成することはできません。
ライブラリa:
typedef struct rectangle { sint16 x; sint16 y; uint16 w; uint16 h; } rectangle;
ライブラリb:
class Rect {
int x; int y; int width; int height;
/* ... */
};
class
現在、 C ++は1つのステップでのみ変換を検索するため、コンバーターを作成できません。あらゆる種類の新しいオブジェクトを作成することを含む多くの可能性があるので、これはおそらく良いことです。
fromを取得し、 struct
froma
のオブジェクトを提供する演算子を作成できません:class
b
foo.cpp:123エラー:'演算子b:: Rect(constrectangle&)'は非静的メンバー関数である必要があります
それで、これを回避する賢明な方法はありますか?
編集:
私はそのコーダーになることを期待していないので、結果をシームレスに処理できるソリューションが本当に必要であることも指摘しておく必要があります。(私は同意しますが、昔ながらの明示的な変換は良い選択でした。他のブランチにreinterpret_cast
も同じ問題があります。)
edit2:
実際、私の実際の質問に実際に答える提案はありません。コンラッド・ルドルフは正しいようです。C++は実際にはこれを行うことができません。吸いますが、本当です。(違いがある場合は、CodingTheWheelで提案されているようにサブクラス化を試してみます。