Для каждого n > 0
мы добавляем новую функцию-член, принимающую это значение в качестве аргумента, который наследуется от следующего уровня вниз:
template<int n, typename Real=double>
class f
: public f<n-1, Real>
{
public:
f() { /* initialize dv */ }
using f<n-1, Real>::prime;
Real prime(Real x, integral_constant<int, n>) {
/* find appropriate index for x, and interpolate on dv */
}
protected:
std::vector<Real> dv;
};
Где базовая версия добавляет operator()
: [117 ]
template<typename Real=double>
class f<0, Real>
{
public:
f() { /* initialize v */ }
Real operator()(Real x) { /* find appropriate index for x, and interpolate */}
Real prime(Real x) { return (*this)(x); }
protected:
std::vector<Real> v;
};
Это означает, что первая производная вызывает prime(x, integral_constant<int, 1>{})
, вторая производная вызывает prime(x, integral_constant<int, 2>{})
и т. Д.
Совершенно программная генерация пользовательского интерфейса достаточно проста. Во-первых, вам нужно отредактировать main.m, чтобы он выглядел примерно так:
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
[pool release];
return 0;
}
где MyAppDelegate - имя класса вашего делегата приложения. Это означает, что экземпляр MyAppDelegate будет создан при запуске, что обычно обрабатывается основным файлом Nib для приложения.
В MyAppDelegate реализуйте свой метод applicationDidFinishLaunching:, аналогичный следующему:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if (!window)
{
[self release];
return;
}
window.backgroundColor = [UIColor whiteColor];
rootController = [[MyRootViewController alloc] init];
[window addSubview:rootController.view];
[window makeKeyAndVisible];
[window layoutSubviews];
}
где MyRootViewController - это Посмотреть контроллер для основного вида в вашем окне. Это должно инициализировать главное окно и добавить к нему представление, управляемое MyRootViewController. rootController хранится в качестве переменной экземпляра в делегате для дальнейшего использования.
UIViews themselves do not have a hierarchy, UINavigationControllers do. So init one of those, and pop a UIViewController onto it's stack. This should do it, in the most basic way possible, with no XIB files at all. You should be able to build on this.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
UINavigationController *navController = [[UINavigationController alloc] init];
UIViewController *viewController = [[UIViewController alloc] init];
// set the properties of viewController here, to make it look like you want
[navController pushViewController:viewController animated:NO];
[window addSubview:navController.view];
// Don't forget memory management
[navController release];
[viewController release];
[window makeKeyAndVisible];
}