Я работаю над созданием физического движка (с помощью книги), и в книге предлагается создать пространство имен для движка, в котором будет существовать, и для первой части я объявляю а «ЬурейеЕ» для переменных, как такРешение typedef и пространств имен VS2010
typedef float real;
и я могу понять объяснение, что автор дает существо, что «если точность потребности изменятся, то вы можете просто пойти в одну строку, и изменить его, а затем, возможно, есть чтобы изменить не более 10 вспомогательных функций и ясность представления, но я думаю, что это совпадает с двумя другими вещами, поэтому я надеюсь, что это последующее.
b ook спрашивает, что я определяю 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;
}
};
}
я делаю что-то неправильно, учитывая, что компилятор игнорирует, что я сделал ЬурейеЕ, и это upscope, где проблема происходит, а затем тот факт, что VS даже не показывает предложения, пока я нахожусь внутри класса в самодельном пространстве имен, немного беспокоит меня.
Edit: основное решение проблемы с разрешением. по-видимому, вместо {
я поставил (
на один из методов, и это заставило его действовать, как и все пространство имен не существовало. хотя VS все равно не окажет мне никакой помощи (сбой функции/класса/пространства имен или предложения завершения даже с помощью ctrl + пробел), также у меня есть некоторые вспомогательные функции, которые я использую (self made pow(), sqrt()), которые я использование, которое вызывает ошибки компоновщика, если не в классе, но это исчезает, когда я вставляю их в линию. это плохо для решения компоновщика?
Вы проверили правописание файла заголовка? '" genfunction.h "или' "genFunction.h" '? – iammilind
это обобщение, и в моем коде это то же самое. исправлено в вопросе – gardian06
В этом случае код представляется [рабочим] (http://ideone.com/QBnyK) с gcc. Используете ли вы более старую версию MSVC? – iammilind