我觉得这应该很简单,但是由于任何原因我都无法使它正常工作。

我正在尝试创建一个类的实例,该类可以通过其他函数直接传递并进行编辑。

例如:

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)

08-24 16:45