¿La definición de la función C ++ y la declaración de variables no coinciden?
Considere este código muy simple:
#include <memory>
class Foo
{
public:
Foo() {};
};
class Bar
{
public:
Bar( const std::shared_ptr<Foo>& foo ) {}
};
int main()
{
Foo* foo = new Foo;
Bar bar( std::shared_ptr<Foo>( foo ) );
return 0;
}
¿Por qué los informes de Visual Studio
warning C4930: 'Bar bar(std::shared_ptr<Foo>)': prototyped function not called (was a variable definition intended?)
y no haybar
objeto creado ... ¿cómo puede esta líneaBar bar( std::shared_ptr<Foo>( foo ) );
ser interpretado como una definición de función?
lo comprobé¿Los paréntesis después del nombre del tipo hacen una diferencia con new? y tambiénC ++: advertencia: C4930: función prototipada no llamada (¿se pretendía una definición variable?), pero siento que mi problema es diferente aquí, ya que no utilicé la sintaxisFoo()
niBar()
.
Editar: Tenga en cuenta que compila correctamente:
Foo* foo = new Foo;
std::shared_ptr<Foo> fooPtr( foo );
Bar bar( fooPtr );