Artigo: 151167 - Última revisão: terça-feira, 2 de Dezembro de 2003 - Revisão: 2.0

Erro: Erro LNK2001 membro estático em modelo de classe

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Erro de Linker LNK2001 é gerado para variáveis de membros estáticos de classes aninhadas nos modelos de classe. Os estados de mensagem:
Erro LNK2001: símbolo externo não resolvido "público: int estático outer<int>::Inner::sobj"(?sobj@Inner@?$outer@H@@2HA)

Resolução

Não utilize variáveis de membro estático aninhadas classes de modelos de classe.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

O código de exemplo abaixo fornece a mensagem de erro LNK2001.

Código de exemplo

/* Compile options needed: none
*/ 

template<class T> class Outer
{
public:
    static T souter;

    class Inner
    {
    public:
        static T sobj;
    };
};

template <class T> double Outer<double>::souter = 1;

template <class T> int Outer<int>::Inner::sobj = 5;

void main()
{
    double dval = Outer<double>::souter;

    int i = Outer<int>::Inner::sobj;
}
				

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 2.2
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 Enterprise Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Palavras-chave: 
kbmt kbbug kbcompiler kbcpponly KB151167 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 151167  (http://support.microsoft.com/kb/151167/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.