This notice means some code passed a whole post object to a function that expects a post ID number. It is a coding mistake in a theme, child theme or snippet, and the fix is to pass $post->ID instead of $post. It is only a notice and the page still loads, but hiding it leaves the bug in place.
Find where it comes from
The notice in your debug log names a file and line. If that file is in your theme or a snippet, look at the function call on that line and check what it is given. A common case in GeoDirectory customisations is the favourite button:
// Wrong: passes the post object.
echo geodir_favourite_html( get_current_user_id(), $post );
// Right: passes the post ID.
echo geodir_favourite_html( get_current_user_id(), $post->ID );
If the file is inside the GeoDirectory plugin, look further down the stack trace for the first file from your theme or snippets. That is usually where the wrong value started.
Use the shortcode instead of plugin functions
In custom templates it is safer to output GeoDirectory elements with their shortcodes, because shortcode options stay stable when internal functions change. For the favourite button:
echo do_shortcode( '[gd_post_fav]' );
It picks up the current listing on its own. The options are in GD > Post Favorite. Every other element can be added the same way with the shortcode builder.
Hide notices on a live site
Notices should never be shown to visitors. In wp-config.php, keep logging on and display off while you fix the cause:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );