Ale*_*lex 7 c++ reference class
我觉得这应该很简单但无论出于什么原因我都无法让它发挥作用.
我正在尝试创建一个类的实例,可以传递给其他函数并直接编辑.
例如:
main()
{
ClassFoo foo = new ClassFoo();
someFunction(foo);
}
void someFunction(ClassFoo& f)
{
f.add("bar");
}
Run Code Online (Sandbox Code Playgroud)
问题是,在编译时,我最终会遇到此错误.
no viable conversion from 'ClassFoo *' to 'ClassFoo'
ClassFoo foo = new ClassFoo();
^ ~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
它还说其他候选构造函数不可行,但是在我的ClassFoo类中我确实有一个如下所示的构造函数:
ClassFoo::ClassFoo()
{}
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能ClassFoo在函数中完成变量的编辑?
aru*_*nte 13
C++不是Java(或者我认为是C#).new除非您知道需要,否则不应使用关键字.它返回一个指向新创建的类的指针,因此会出现错误.可能,以下就足够了:
Class foo;
someFunction(foo);
Run Code Online (Sandbox Code Playgroud)
对于默认的构造对象,你不应该包含()你不使用的new东西,因为这会做一些完全不同的东西(参见最令人烦恼的解析)
小智 5
您可能已经习惯了C#或类似的sintax。
但是,在C ++中,这些行之间存在很大的差异:
ClassFoo foo; //local variable at stack
ClassFoo *foo = new ClassFoo(); //local pointer to some memory at heap which is structured like ClassFoo
Run Code Online (Sandbox Code Playgroud)
您可能只需要第一行来创建本地对象。有很多描述堆和栈之间区别的教程。