Pergunta

(De Reading Capítulo 3 do design moderno de C ++)

typelist.hpp:

class NullType {};

struct EmptyType {};


template <class T, class U>
struct Typelist
{
  typedef T Head;
  typedef U Tail;
};

#define TYPELIST_1(T1) Typelist<T1, NullType>
#define TYPELIST_2(T1, T2) Typelist<T1, TYPELIST_1(T2) >
#define TYPELIST_3(T1, T2, T3) Typelist<T1, TYPELIST_2(T2, T3) >
#define TYPELIST_4(T1, T2, T3, T4) Typelist<T1, TYPELIST_3(T2, T3, T4) >
#define TYPELIST_5(T1, T2, T3, T4, T5) Typelist<T1, TYPELIST_4(T2, T3, T4, T5) >
#define TYPELIST_6(T1, T2, T3, T4, T5, T6) Typelist<T1, TYPELIST_5(T2, T3, T4, T5, T6) >


namespace TL
{
  template <class TList> struct Length;
  template <> struct Length<NullType>
  {
    enum { value = 0 };
  };

  template <class T, class U>
    struct Length< Typelist<T, U> >
    {
      enum { value = 1 + Length<U>::value };
    };


  template <class Head, class Tail>
    struct TypeAt<Typelist<Head, Tail>, 0>
    {
      typedef Head Result;
    };

  template <class Head, class Tail, unsigned int i>
    struct TypeAt<Typelist<Head, Tail>, i>
    {
      typedef typename TypeAt<Tail, i-1>::Result Result;
    };

}

main.cpp

#include "typelist.hpp"

Typelist<int, double> foo;

int main() {
}

g ++ main.cpp

typelist.hpp:37: error: ‘TypeAt’ is not a template
typelist.hpp:43: error: type/value mismatch at argument 2 in template parameter list for ‘template<class Head, class Tail> struct TL::TypeAt’
typelist.hpp:43: error:   expected a type, got ‘i’

Por que recebo esse erro? Como faço para corrigir isso?

Foi útil?

Solução

Parece que você está perdendo uma declaração avançada.

Esta é uma especialização parcial:

template <class Head, class Tail>
struct TypeAt<Typelist<Head, Tail>, 0>

Mas o compilador não tem idéia do que é uma especialização. Adicione isso antes:

template <class List, unsigned Index>
struct TypeAt;

Isso vamos saber o compilador: "Há uma aula TypeAt que possui dois parâmetros de modelo. "Então, agora quando você o especializa, o compilador sabe de que classe você está falando.


Nota, seu uso de Typelist está incorreto. Esses algoritmos são Sentinel terminado. Isso significa que, como as cordas C, eles esperam que os dados sejam concluídos com um valor especial. No nosso caso, isso é NullType.

Então pegue ÉricConselho. (ou seja, dica: se você achou a resposta dele útil, votá-la.)

Outras dicas

Você deve configurar seu serviço de perfil de usuário que importará todas as suas entidades do Active Directory para o SharePoint. Você pode criar uma web parte que permite que o usuário final selecione a sede dos filtros e 'local' e, em seguida, execute uma consulta nos perfis de usuário importados:

no administrador central:

  • Certifique-se de que seu serviço é iniciado (UPS / UPS Sync Service em Gerenciar serviços no servidor)
  • goto gerenciar aplicativos de serviço e clique em Novo 'Aplicativo de Serviço de Perfil do Usuário'
  • Uma vez criado, em sincronização Clique em "Configurar conexões de sincronização"
  • fazer um iisreset antes de você 'criar nova conexão' ou então você pode obter um erro
  • Certifique-se de ter uma conta com permissão de leitura do Active Directory
  • Digite seu nome da floresta e uma conta de anúncio autorizado (você pode precisar de alguma ajuda de uma configuração ad administradora)
  • Certifique-se de clicar em preencher recipientes e selecionar a raiz ou apenas os usuários ou
  • Para iniciar a sincronização Clique em "Start Profile SyncRonization" e selecione Full Sync. Você deve então ver a mudança de status para 'sincronizar'.
  • Agora você pode 'configurar o trabalho temporizador de sincronização' para executar toda semana ou dia, dependendo da frequência com que seu anúncio é atualizado.

    Dê algum tempo e você verá o número de perfis de usuário aumentar. Agora, sugiro verificação para ver se a sede e a localização são armazenadas no anúncio. Você pode confirmar isso clicando em "Gerenciar Propriedades do usuário". Em caso afirmativo, você pode consultar os perfis do usuário com esses filtros usando UserProfileManager.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top