私は物理エンジンの作成に取り組んでいます(本の助けを借りて)、本書ではエンジンが存在するための名前空間を作成することを提案しています。そうtypedefと名前空間を解決するVS2010
typedef float real;
のような変数のための「typedefは」と私は著者が精度のニーズが変化した場合、あなたはこの1つのだけの行に移動し、それを変更し、多分持つことができる」ということで与えられるという説明を理解することができますせいぜい10のヘルパー関数と表現の明快さを変えたいと思っていますが、他の2つのものと一致すると思いますので、これが可能であることを願っています。
the b ookはtypedefとヘルパー関数をあるファイルに定義して(変更が必要な場合はファイルホッピングを最小限に抑えるため)、他のファイルがコンパイルされる前にそれをインクルードし、名前空間でこれをすべて実行するように要求します。 、別のファイルにエンジンで使用するクラスを作成します。直接の問題は、インテリセンスであり、そして
genFunction.h
namespace Physics{
typedef float real;
}
Classes.h
#include "genFunction.h"
namespace Physics{
class Vector3{
public :
real x; // visual studio is throwing that Physics::real is not a type name
real y;
real z;
// VS is not offering collapsing, or any form of
// auto/assistance with lines.
// almost like it does not want me to have classes
// in my own namespaces
Vector3(){ // uncolapsable
x = 0;
y = 0;
z = 0;
}
};
}
を解決する私は、コンパイラは、私がのtypedefを行っていることを無視していることを考慮すると、何も悪いことをやって、それは問題が発生している場所のupscope、その後、事実であるのですけれどもそのVSは私が自分自身で名前空間を作っているクラスの中にある間、提案を表示していません。
編集:タイプの解決に向けて主要な解決策が見つかりました。明らかに{
の代わりに私は(
をメソッドの1つに置きました。そのため、名前空間全体が存在しなかったように動作しました。 VSはまだ私に助け(関数/クラス/名前空間の崩壊、またはctrl +スペースバーでさえも完了の提案)を私に与えないだろうが、私は自分自身でpow()、sqrt()クラス内になければリンカエラーを引き起こしますが、インライン展開するとこれがなくなります。これはリンカを解決するには悪いことですか?
ヘッダーファイルのスペルを確認しましたか? '" genfunction.h "'または '" genFunction.h "'? – iammilind
これは一般化であり、私のコードでは同じです。問題の修正 – gardian06
その場合、コードはgccで[作業中](http://ideone.com/QBnyK)と思われます。以前のバージョンのMSVCを使用していますか? – iammilind