2011-07-04 14 views
3

現在、私は3D視覚化プログラムでプログラミングしていますので、便利なベクター操作を行うために独自のVector3クラスを作成しました。それは私が独自のVector3クラスを持っているために外部ライブラリを使ったいくつかのメッシュをロードする必要があるまでうまくいきました。コンパイラはそれらを区別することができず、コードにあまりにも多く含まれているので、両方を変更することはできません。 どのように私はコンパイラのためにそれらを分離することができます考えている?私のクラスはライブラリクラスに干渉する

私は、ローダーのインクルードの周りに名前空間を作成することを考えましたが、ライブラリの実装にエラーがありました。

いずれのアイデアも高く評価されます。

編集 残念ながら私自身のプロジェクトとライブラリには、独自の名前空間がありません。

(解決済み) 私はライブラリを削除し、Eclipseを使用してコードを自動的にリファクタリングすることでこれを解決しました。しかし、もしこれを行うことができないのであれば、IDEから独立したC++でこの問題を解決することができますか? - >マークされていない

+2

名前空間が解決策です。コンパイラ/リンカのエラーが発生した場合は、質問を編集して代表的なコードを追加する必要があります。 –

+0

Ehm。私は、ライブラリが独自の名前空間に 'Vector3'クラスを持っていることを確信しています。もしそうでなければ、とにかく悪いです。あなたはそのライブラリに 'namespace XXX ;;を使っていますか? – Xeo

+4

@ Xeo:OPが自分のクラスを名前空間に入れてくれることを願っています。 –

答えて

7

EDIT残念ながら私自身のプロジェクト。ライブラリには名前空間がありません。

解決策は明らかです。あなたのプロジェクトを名前空間に入れる。また、本当に名前空間がない場合は、Vector3を使ってライブラリのVector3を参照してください。

+0

私は自分自身でライブラリからVector3を使いません。ライブラリのみが行います。後で名前空間を追加することを検討するのは非常に退屈ですが、おそらくそれが唯一の方法です。 – Nobody

0

あなたが作成したクラス名とその組み込みクラスの前にプロジェクト名前空間を使用してください。 のような:

MyProjectと::のVector3D

XXX ::のVector3D 'XXX' はのVector3Dクラスが含まれている組み込みれる名前空間をある

として

+4

C++のスコープ演算子は '::'ではなく '::'です。 –

関連する問題