Aquí está la declaración. Creo que esto está usando un operador de reparto, pero ¿cuál es el problema con el incremento de publicación? Declaración¿Qué significa esta sintaxis de C++?
(*C)(x_i,gi_tn,f)++;
y definición de C
:
std::auto_ptr<conditional_density> C(new conditional_density());
Declaración de la clase conditional_density
:
class conditional_density: public datmoConditionalDensity{
public:
static const double l_min, l_max, delta;
static double x_scale[X_COUNT]; // input log luminance scale
double *g_scale; // contrast scale
double *f_scale; // frequency scale
const double g_max;
double total;
int x_count, g_count, f_count; // Number of elements
double *C; // Conditional probability function
conditional_density(const float pix_per_deg = 30.f) :
g_max(0.7f){
//Irrelevant to the question
}
double& operator()(int x, int g, int f)
{
assert((x + g*x_count + f*x_count*g_count >= 0) && (x + g*x_count + f*x_count*g_count < x_count*g_count*f_count));
return C[x + g*x_count + f*x_count*g_count];
}
};
La clase padre, datmoConditionalDensity
, sólo tiene un destructor virtual.
Habría sido fácil responder a esto depurando el código, pero este código no se compilará en Windows (necesita un montón de bibliotecas externas).
El lema detrás de esa línea de código en particular es: ¿La legibilidad es para los débiles? – Grizzly
@Grizzly, los programadores reales lo hacen todo en una sola línea ...con la pantalla apagada ... en la oscuridad ... mientras usa un bolígrafo. :) – riwalk