Perguntas com a marcação «c++»

9
Como evitar modificações nos dados da matriz?

Digamos que eu tenha uma classe parecida com esta (este é apenas um exemplo): class A { double *ptr; public: A() : ptr( new double[100] ) {} A( const A &other ) { other.ptr[7] = 15; } void doNotChangeMyData() const { ptr[43] = 14; } void changeMyData() { ptr[43] = 14; } ~A() {...

9
Tentando entender modelos e pesquisa de nome

Estou tentando entender os seguintes trechos de código Snippet # 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Nem o gcc9 nem o clang9 lançam um erro aqui. P. por que esse código é compilado? Não estamos instanciando A<B>ao...

9
É permitido adicionar zero a um ponteiro nulo?

Eu sei que a aritmética do ponteiro não é permitida para ponteiros nulos. Mas imagine que eu tenho algo parecido com isto: class MyArray { int *arrayBegin; // pointer to the first array item, NULL for an empty array unsigned arraySize; // size of the array, zero for an empty array public: int...

9
New (this) ThisClass () é uma má idéia?

class FooView final : public Something { ... void refresh() { this->~FooView(); new (this) FooView(); } } Eu nunca vi esse idioma e parece que pode ser realmente sutil e confuso, mas não consigo pensar em um problema com ele (desde que FooViewseja final). Isso é uma má...

9
Conversão para void ** em diferentes compiladores

Eu tenho executado o seguinte código através de diferentes compiladores: int main() { float **a; void **b; b = a; } Pelo que pude reunir, nãovoid ** é um ponteiro genérico, o que significa que qualquer conversão de outro ponteiro não deve compilar ou, pelo menos, emitir um aviso. No entanto,...