三行代码  ›  专栏  ›  技术社区  ›  BillPlayz

如何设置复制的类实例的成员?[已关闭]

c++
  •  -1
  • BillPlayz  · 技术社区  · 1 月前

    我目前正在开发一个实例系统,到目前为止,这是我尝试过的:

    //[...]
    #include <string>
    #include <list>
    
    class Instance { // Instance class
    public:
        std::string Name;
        std::string Type;
        SDL_Texture* Texture; // All this is for a list for an SDL renderer.
        int x;
        int y;
    };
    
    class instances {
    public:
        Instance New(std::string Name, std::string Type) {
            Instance newInstance; // Clone the class? Doesn't raise error.
            Instance::Name = "Test"; // Set a variable from the cloned class. Error: "a nonstatic member reference must be relative to a specific object"
        };
    
        std::list<int> list = {}; // Ignore this...
    };
    //[...]
    

    您将能够使用上面显示的“New”函数创建实例,该函数应返回“Instance”类(也在上面)的副本。

    不幸的是,正如我在脚本注释中所写的那样,它引发了一个错误。

    1 回复  |  直到 1 月前
        1
  •  0
  •   Anoop Rana    1 月前

    问题是 Name 是类的非静态数据成员 Instance 所以你需要一个 例子 您可以访问该字段 名称 .

    此外,您应该在函数中添加return语句 New .

    正确的方法如下所示:

    Instance New(std::string Name, std::string Type) {
            Instance newInstance; // create object of type Instance
    //-----------------v--------------------->used . instead of ::
            newInstance.Name = "Test"; 
        
            return newInstance;//added return statement
        };