我正在开发一个相对简单的程序(实际上是一个计算器).但是,我决定尽可能使我的程序的所有组件都是通用的,因为:
作为该计划的一部分,我正在使用Tuple我正在编写的课程.我知道一个类已经存在,但我喜欢完全控制我的代码,这只是一个练习.
我需要做的一件事是将表达式元组(表达式本身是通用的)转换为包含表达式求值结果的元组.简而言之,我(遗漏了一些琐碎的部分):
template <class T>
class Expression {
public:
virtual T Eval() = 0;
// ...
};
template <class First, class ... Rest>
class Tuple {
// ...
private:
First first;
Tuple<Rest ...> rest;
};
Run Code Online (Sandbox Code Playgroud)
我想专门研究像这样的泛型类型的元组:
template <template <class> class R, class First, class ... Rest>
class Tuple<R<First>, R<Rest> ...> {
// and here is the problem:
Tuple<First, Rest ...> Transform(function<template<class T> T(R<T>)>);
};
Run Code Online (Sandbox Code Playgroud)
之后我可以这样做:
template <class T> // There has to be a better …Run Code Online (Sandbox Code Playgroud) c++ generics higher-kinded-types variadic-templates higher-rank-types
我使用的是EF5和.NET 4.5.我有一个特定的类在数据库中生成不正确.虽然我的网站有点复杂,但我会简化;
namespace Store.Enities
{
public enum Role
{ Manager, Clerk }
public class User
{
public int Id {get; set;}
public ICollection<Role> Roles {get; set;}
}
public class StoreContext : DbContext
{
public DbSet<User> Users {get; set;}
public StoreContext()
{
Database.SetIntializer(new DropCreateDatabaseIfModelChanges<StoreContext>());
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,用户可以拥有多个角色.出于某种原因,我无法将角色存储在数据库中.