Я работаю над созданием физического движка (с помощью книги), и книга предлагает мне создать пространство имен для существующего движка, а в первой части я объявляю 'typedef' для таких переменных, кактак что
typedef float real;
и я могу понять объяснение, которое автор дает так: «если точность нуждается в изменении, вы можете просто перейти к этой одной строке и изменить ее, а затем, возможно, придется изменить не более 10вспомогательные функции и ясность представления, но я думаю, что это совпадает с двумя другими вещами, так что я надеюсь, что это понятно.
книга просит, чтобы я определил typedef и вспомогательные функции в одном файле (чтобы минимизировать скачкообразное изменение файлов, если необходимо изменение), а затем включить его до компиляции других файлов и сделать все это в пространстве имен (я назвал его физикой), а затем в другом файле создать классы, которые будут использоваться в движке.прямая проблема с intellisense, и решение
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;
}
};
}
я делаю что-то не так, учитывая, чтоmpiler игнорирует то, что я сделал typedef, и это увеличивает область возникновения проблемы, а затем тот факт, что VS даже не показывает предложений, пока я нахожусь в классе в собственном пространстве имен, немного беспокоит меня.
Редактировать: основное решение найдено для разрешения типа.очевидно, вместо {
я поместил (
в один из методов, и это заставило его действовать так, как будто не существовало всего пространства имен.хотя VS все равно не окажет мне никакой помощи (свертывание функций / классов / пространств имен или предложения по завершению даже с помощью ctrl + пробел), также у меня есть некоторые вспомогательные функции, которые я использую (self made pow (), sqrt ()), которые яиспользуйте те, которые вызывают ошибки компоновщика, если не в классе, но это исчезает, когда я помещаю их в строку.это плохо для разрешения компоновщика?