It's a largely unanswered question, because it's one of those "Well, duh!"
momements in programming. You've declared a variable, of some type, in a
C or C++ program, and you've used its name in an expression where you've
applied the function-call operator — () — to it.
Well, duh! That makes no sense.

The classic unanswered example, that Google Web used to rank near the top,
is code like this:

As you can see, the questioner uses det2 both as a function
and a variable, expecting the compiler to telepathically figure out what
the programmer really wanted to name each time that xe used the name. But
in the scope of the det3 function body, det2 is
declared as a variable, and that's what it remains until the end of the
block scope. Of course it cannot be used as a function. It's
the name of a variable at that point.

There are many variations on this theme, but they all boil down to the
same thing. You've used the name of a variable with the function call
operator, possibly because you didn't realize that, syntactically, the
code that you were writing was a function call operator.
That cannot be done, as the error message says.