c++ - 没有从 'Class *' 到 'Class' C++ 的可行转换

标签 c++ class reference

我觉得这应该很简单,但无论出于何种原因我都无法让它工作。

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

例如:

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#)。你不应该使用 new 关键字,除非你 know that you need to .它返回一个指向新创建的类的指针,因此会出现错误。可能,以下内容就足够了:

Class foo;
someFunction(foo);

对于默认构造的对象,如果您不使用 new,则不应包含 (),因为这会做一些完全不同的事情(参见 the most vexing parse )

关于c++ - 没有从 'Class *' 到 'Class' C++ 的可行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29136286/

相关文章:

c++ - Boost thread_group 返回空矩阵(openCV)

c++ - execlp 系统调用不打印到标准输出?

ios - 查看不使用它的类代码?

java - 如何执行包含来自不同java程序(runtime.exec())的带有某些参数的方法的java类文件?

c++ - 如何在 C++ 中解释 "const int *const & variable"

c++ - 当按引用传递的参数存储在被调用者对象中,然后被调用者删除时会发生什么?

javascript "this"再次指向 Window 对象

c++ - 如何删除二维 vector 中的元素?

c++ - 在 C++ 中,如何使同一类的两个对象具有独特的函数行为?

actionscript-3 - AS3 - 我可以知道一个类是否实现了一个接口(interface)(或者是另一个类的子类)吗?