Member function declared with 'override' does not override a base class member

So I know my way around unreal but with C++ I’m out of my element a bit so I have no clue what exactly is wrong with the code (Converted blueprints to C++ and this happened) //~ Begin FArchive Interface
virtual FArchive& operator<<(FLazyObjectPtr& Value) override { return SerializeLazyObjectPtr(*this, Value); }
virtual FArchive& operator<<(FObjectPtr& Value) override { return SerializeObjectPtr(*this, Value); }
virtual FArchive& operator<<(FSoftObjectPtr& Value) override { return SerializeSoftObjectPtr(*this, Value); }
virtual FArchive& operator<<(FSoftObjectPath& Value) override { return SerializeSoftObjectPath(*this, Value); }
virtual FArchive& operator<<(FWeakObjectPtr& Value) override { return SerializeWeakObjectPtr(*this, Value); }
//~ End FArchive Interface
Now I can’t open my project that I spent months on help will be appreciated.

What class is this code from and more importantly, does it extend FArchive?

Regarding the broken project, you could always go back to the backup that you absolutely did make before you started doing this, right?

The class is COREUOBJECT_API, the weird thing is that some overrides work like (FName& Name) and (UObject*& Object) but the other ones listed above don’t.

The class name would be after COREUOBJECT_API, and to have that suggests it is an engine file, which is weird. I guess the bit after the class is more important anyway, the list of things it derives from.

When you say you converted it from BP tp C++, how exactly did you go about this?

I added a new C++ class through Unreal Engine which then created the code for the project. If you still need the bit after COREUOBJECT_API then its FArchiveUOBJECT.

the part after that is what is really needed (after the :), but with other related operator overrides working probably not relevant.

If you are new to C++ and converted this from BP yourself, can I ask where all those stream operator overloads came from?

I took a quick look in the 5.4.2 source, and none of those signatures match what is declared in FArchive, my best guess is you took that code from somewhere (?) and it is for an older version and overrides functions that no longer exist. If that is that case, just deleting the offending functions should fix you issue; or if they are used elsewhere in this code, just remove the override off the end of the decs.

Deleting the override code cause a couple new errors a class defining error(should be able to fix) and a strange error involving a command line exited from code 6 which is weird that would happen. If I did take the code from somewhere don’t know where. I’m running on Unreal 5.0.3 so maybe I need to upgrade the engine?

If the code were from a newer engine version that could certainly cause issues. The fact I couldn’t find the base functions in 5.4.2 kind of suggests otherwise, but I think I’m probably missing something there, as Googling the signature for the first one revealed this error is not entirely uncommon, and is not fixed by removing overrides.

Interesting links:

https://www.reddit.com/r/unrealengine/comments/uadj3s/ue5_brand_new_c_project_has_several_coreneth/

I am having the same issue with the same file. You are not alone…

virtual bool SerializeBulkData(class FBulkData& BulkData, const struct FBulkDataSerializationParams& Params) override
{
	return InnerArchive.SerializeBulkData(BulkData, Params);
}

also

	virtual bool SetCompressionMap(TArray<FCompressedChunk>* CompressedChunks, ECompressionFlags CompressionFlags) override
	{
		return InnerArchive.SetCompressionMap(CompressedChunks, CompressionFlags);
	}

Both inside UE5/Source/Runtime/Core/Public/Serialization/ArchiveProxy.h

I have 0 need to edit this file so why would it complain that this file is broken?

Using 5.4.2

1 Like