【问题标题】:C++ object dynamic naming [duplicate]C ++对象动态命名[重复]
【发布时间】:2012-11-08 01:27:40
【问题描述】:

可能重复:
Using unique dynamic variable names (not variable values!)

我是使用 c++ 进行面向对象编程的新手。我正在尝试使用类和对象编写代数求解器。

例如,我想创建一个名为term 的类。 例如,我有一个变量:

int number_of_term = 1;

然后我想创建一个名称为number_of_term 的术语对象。

我试着用指针来做,但没有用:

term *number_of_term;

是否可以在 C++ 中动态创建和命名对象?我可以使用变量作为对象的名称吗?

如果不是,我应该怎么做才能做出类似的东西。

【问题讨论】:

  • @Joe 不完全相同,但这必须是某些东西的副本
  • 您正在尝试使用像 C 字符数组这样的对象。不要那样做。使用 std::vector、std::list 或 std::deque

标签: c++ oop pointers


【解决方案1】:

不,C++ 中对象的名称必须在编译时确定。 C++ 不是动态语言。您可能应该改用std::mapstd::unordered_map。这些将允许您将字符串映射到对象。这就是让您在运行时确定对象名称的动态语言通常是如何实现的。

【讨论】:

    【解决方案2】:

    不,您不能使用变量作为对象的名称。如果我正确理解了您的用例,您需要number_of_term 类型为term 的对象。您可以使用像 vector 这样的容器类来保存 number_of_term 对象。像这样的:

    #include <vector>
    
    struct Term
    {
    };
    
    int main ()
    {
      std::vector< Term > terms;
      int number_of_term = 10;
    
      for(int i = 0; i < number_of_term; ++i)
      {
        terms.push_back( Term() );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 2020-10-29
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多