Definição de função C ++ e incompatibilidade de declaração variável?
Considere este código muito simples:
#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 que os relatórios do Visual Studio
warning C4930: 'Bar bar(std::shared_ptr<Foo>)': prototyped function not called (was a variable definition intended?)
e não hábar
objeto criado ... como pode esta linhaBar bar( std::shared_ptr<Foo>( foo ) );
ser interpretado como uma definição de função?
eu chequeiOs parênteses após o nome do tipo fazem diferença com new? e tambémC ++: aviso: C4930: função prototipada não chamada (foi definida uma definição de variável?), mas sinto que meu problema é diferente aqui, pois não usei a sintaxeFoo()
nemBar()
.
Editar: Observe que ele compila com êxito:
Foo* foo = new Foo;
std::shared_ptr<Foo> fooPtr( foo );
Bar bar( fooPtr );