我觉得这应该很简单,但是由于任何原因我都无法使它正常工作。
我正在尝试创建一个类的实例,该类可以通过其他函数直接传递并进行编辑。
例如:
main()
{
ClassFoo foo = new ClassFoo();
someFunction(foo);
}
void someFunction(ClassFoo& f)
{
f.add("bar");
}
问题是,在编译时,我最终遇到此错误。
no viable conversion from 'ClassFoo *' to 'ClassFoo'
ClassFoo foo = new ClassFoo();
^ ~~~~~~~~~~~~~~~
它还说其他候选构造函数不可行,但是在我的
ClassFoo
类中,确实有一个类似如下的构造函数:ClassFoo::ClassFoo()
{}
那么,如何才能在函数中完成
ClassFoo
变量的编辑? 最佳答案
C++不是Java(或我想的C#)。除非您使用know that you need to,否则切勿使用new
关键字。并且它返回指向新创建的类的指针,因此会出现错误。可能就足够了:
Class foo;
someFunction(foo);
对于默认的构造对象,如果您不使用
()
,则不应包含new
,因为这样做会完全不同(请参阅the most vexing parse)