(C ++ e gcc) erro: esperado construtor, destruidor, ou tipo de conversão antes de 'in-line'

StackOverflow https://stackoverflow.com/questions/1227842

  •  22-07-2019
  •  | 
  •  

Pergunta

Eu tenho um arquivo de cabeçalho com alguns métodos de modelo em linha. Eu adicionei uma declaração de classe para ele (apenas um par de métodos estáticos ... é mais de um namespace de uma classe), e eu comecei a receber este erro de compilação, em um arquivo que usa essa nova classe.

Existem vários outros arquivos que incluem o mesmo arquivo .h que ainda compilar sem queixa.

pesquisando para o erro me dá um monte de links para listas de discussão sobre erros em projetos que têm uma mensagem de erro semelhante (a única diferença aparente ser o que o construtor, a conversão destructor, ou tipo deve preceder).

Eu estou pronto para começar a descascar tudo fora até que eu tenha um bare-ossos amostra mínima para que eu possa fazer a pergunta inteligente, mas eu percebi que eu tomar uma facada na cotação do jeito estúpido primeira:

Alguém pode me dar uma pista básica sobre o que esta mensagem de erro, na verdade, através , então eu poderia ser capaz de começar a rastreá-lo / google-lo?

Apenas por uma questão de exaustividade, o primeiro exemplo de onde eu estou vendo isso parece mais ou menos como

namespace Utilities
{
   template <typename T> GLfloat inline NormalizeHorizontally(T x)
   {
      GLfloat scaledUp = x*2.0;
      GLfloat result = scaledUp / Global::Geometry::ExpectedResolutionX;
      return result;
   }
}
Foi útil?

Solução

Isso significa que você colocar a palavra-chave "inline" no lugar errado. Ele precisa ir antes do tipo de retorno do método, por exemplo.

 template <typename T> inline GLfloat  NormalizeHorizontally(T x)

Simples como isso.

A razão que você recebeu esta mensagem em uma compilação de unidades e outros não podem ser porque é uma função templated que não estava sendo instanciado a partir dessas outras unidades de compilação.

Geralmente, se você receber um erro "esperado blá blá antes foobar", este é um erro de análise e que muitas vezes indica um erro de sintaxe simples, como um ponto e vírgula faltando, cinta ausente, ou palavras-chave misordered. O problema é geralmente em algum lugar ao redor da porção mencionado, mas poderia realmente ser um tempo atrás, por isso às vezes você tem que caçar para ele.

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