I feel like this should be simple but for whatever reason I can't get it to work.
I'm trying to create an instance of a class that can be passed into and edited directly by other functions.
For example:
main()
{
ClassFoo foo = new ClassFoo();
someFunction(foo);
}
void someFunction(ClassFoo& f)
{
f.add("bar");
}
The problem is, when compiling, I end up with this error.
no viable conversion from 'ClassFoo *' to 'ClassFoo'
ClassFoo foo = new ClassFoo();
^ ~~~~~~~~~~~~~~~
It also says that other candidate constructors are not viable, however in my ClassFoo
class I do have a constructor that looks like this:
ClassFoo::ClassFoo()
{}
So how would I be able to accomplish editing the ClassFoo
variable in functions?
C++ is not Java (or C# I suppose). You should never use the new
keyword unless you know that you need to. And it returns a pointer to the newly created class, hence the error you get. Likely, the following would be sufficient:
Class foo;
someFunction(foo);
For a default constructed object, you shouldn't include the ()
if you're not using new
, as this does something completely different (see the most vexing parse)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With