【问题标题】:C++ unable to assign objects passed as pointer in methods to variableC++ 无法将在方法中作为指针传递的对象分配给变量
【发布时间】:2014-11-24 03:30:48
【问题描述】:

我有一个名为 MyClass 的类,声明如下:

#pragma once

class Object_Class;

class MyClass
{
   static Object_Class *object;

public:

    static void setObject_Class(Object_Class *var);
};

object 是一个私有静态变量,指向类Object_Class 的对象。在实现文件中,我正在尝试这样做:

void MyClass::setObject_Class(Object_Class *var) {
    object = var;
}

但是,我收到一个 symbol not found for i386 architecture 错误,指向此分配。我做错了什么,我该如何解决?这是传递对象并将其存储在另一个类变量中的最佳方法,还是有更好的方法?

【问题讨论】:

    标签: c++ pointers object i386


    【解决方案1】:

    您需要为静态对象声明和初始化存储:

    Object_Class *MyClass::object = nullptr;
    
    void MyClass::setObject_Class(Object_Class *var) {
        object = var;
    }
    

    【讨论】:

    • 它有效。有没有更好的方法来传递对象并将它们存储在私有变量中?
    • 你在这里声明了静态私有变量。您的问题是关于私有(实例)变量吗?或静态(又名类)变量...
    • 嗯,私有静态变量?除了如何在定义它们的类之外访问这些变量之外,应该如何将对象指针分配给它们会有什么不同吗?
    • 好吧,你为什么需要“更好的方法来传递对象并将它们存储在私有变量中”?上面那个你到底不喜欢什么?
    • 不,不是我不喜欢某样东西。我来自Java背景,很简单,只需传递对象,就完成了。这里有无数种方法,通过指针传递(如这里),通过引用传递,在定义自定义复制构造函数后通过分配等等。所以问这个是否是最好的..
    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2014-02-24
    • 2015-02-12
    • 2012-12-11
    • 2023-03-13
    • 2017-11-26
    相关资源
    最近更新 更多