Eu gostaria de fazer isso:
template <typename T>
struct S
{
...
static double something_relevant = 1.5;
};
mas não posso, pois something_relevant
não é do tipo integral. Não depende T
, mas o código existente depende de ser um membro estático S
.
Como S é modelo, não posso colocar a definição em um arquivo compilado. Como eu resolvo este problema ?
std::string
tipo #Respostas:
Basta defini-lo no cabeçalho:
Como faz parte de um modelo, como em todos os modelos, o compilador garantirá que seja definido apenas uma vez.
fonte
<goes_playing>
Uau, quando passo o mouse sobre seu nome, vejo seu representante! Também não conhecia esse. @ Pasoon: Não, você está certo, cheguei iterativamente a onde está agora. (É por isso que eu up-votado a sua resposta, BTW.)Desde o C ++ 17, agora você pode declarar o membro estático
inline
, o que definirá a variável na definição de classe:live: https://godbolt.org/g/bgSw1u
fonte
Isso vai funcionar
fonte
template<typename T> double S<T>::something_relevant=1.5;)
erro de execução do compilador. Você pode me dizer qual é o motivo?