Resultados da pesquisa a pedido "static-cast"

7 a resposta

C ++ não pode converter da base A para o tipo B derivado via base virtual A

Eu tenho três classes: class A {}; class B : virtual public A {}; class C : virtual public A {}; class D: public B, public C {};Tentando uma conversão estática de A * para B *, recebo o erro abaixo: cannot convert from base A to derived type B ...

2 a resposta

O que o static_cast <T> faz com um T &?

Então eu pergunteiessa questão [https://stackoverflow.com/q/37967446/2642059]e eu estava tentando resolver isso viastatic_cast. (Aliás, resolve o problema, só não tenho certeza se entendi o porquê.) No código: vector<int> foo = {0, 42, 0, 42, ...

2 a resposta

Por que posso usar static_cast com void *, mas não com char *

Eu sei dissoreinterpret_cast [http://en.cppreference.com/w/cpp/language/reinterpret_cast]é usado principalmente indo ou vindo dechar*. Mas fiquei surpreso ao descobrir questatic_cast [http://en.cppreference.com/w/cpp/language/static_cast]poderia ...

7 a resposta

Por que temos reinterpret_cast em C ++ quando dois static_cast encadeados podem fazer seu trabalho?

Diga que eu quero transmitirA* parachar* e vice-versa, temos duas opções (quero dizer, muitos de nós pensam que temos duas opções,Porque ambos parecem funcionar! Daí a confusão!): struct A { int age; char name[128]; }; A a; char *buffer ...

2 a resposta

reinterpret_cast para quase dados de pod (a compatibilidade de layout é suficiente)

Estou tentando aprender sobrestatic_cast ereinterpret_cast. Se eu estiver correto, o padrão (9.2.18) diz quereinterpret_cast para dados do pod é seguro: Um ponteiro para um objeto POD-struct, convertido adequadamente usando umreinterpret_cast, ...

2 a resposta

valor do ponteiro static_cast'd

No esboço atual padrão (e C ++ 17),esta [http://eel.is/c++draft/expr.static.cast#13]está escrito sobre static_casting umvoid *: Um pré-valor do tipo "ponteiro paracv1 void ”pode ser convertido em um pré-valor do tipo“ ponteiro paracv2 T ”, onde ...

5 a resposta

Como implementar uma verificação em tempo de compilação de que um downcast é válido em um CRT

Eu tenho um CRPT antigo simples (por favor, não se distraia com restrições de acesso - a questão não é sobre eles): template<class Derived> class Base { void MethodToOverride() { // generic stuff here } void ProblematicMethod() ...

2 a resposta

Downcast em uma hierarquia de diamantes

Por quêstatic_cast não pode fazer downcast de uma base virtual? struct A {}; struct B : public virtual A {}; struct C : public virtual A {}; struct D : public B, public C {}; int main() { D d; A& a = d; D* p = static_cast<D*>(&a); //error } g ++ ...

4 a resposta

static_cast with boost :: shared_ptr?

Qual é o equivalente a umstatic_cast comboost::shared_ptr? Em outras palavras, como preciso reescrever o seguinte Base* b = new Derived(); Derived* d = static_cast<Derived*>(b);quando usarshared_ptr? boost::shared_ptr<Base> b(new Derived()); ...

6 a resposta

C ++ Quando devemos preferir usar um static_cast de dois encadeados em vez de reinterpret_cast

Em primeiro lugar, este não é um duplicado dePor que nós reinterpret_cast em C ++ quando dois static_cast encadeados podem fazer seu ...