我想为函数中的对象分配内存。但是,它不起作用。这是代码:
class MyClass { ... };
void foo(MyClass *mc) { mc = new MyClass; }
int main() {
MyClass *mc;
foo(mc);
if (mc == NULL)
std::cout << "Faile" << std::endl;
}
我不擅长指针。谁能给我一个关于我的错误的解释?谢谢!
答案 0 :(得分:3)
如果你真的想让你的东西工作,你可以使用对指针的引用进行编码:
void foo(MyClass *&mc) { mc = new MyClass; }
但这太荒谬了。只需返回指针:
MyClass* foo () { return new MyClass; }
实际上,你很少需要做这些事情。使用smart pointers,请参阅here。
你肯定需要阅读更多关于C ++的内容(例如Stroustrup的Programming : Principles & Practice using C++&amp; C++ Programming Language (4th edition)等...),你应该使用现代C++11实现(例如4.9版)或更好的GCC)。阅读RAII,SFINAE,Rule of Three / Rule of Five ...