【问题标题】:convert a long integer into class object using constructor c++使用构造函数 c++ 将长整数转换为类对象
【发布时间】:2014-11-22 02:06:50
【问题描述】:

我必须创建一个内部定义为短值向量的类。向量初始大小为 40。现在,我必须创建一个构造函数,将用户输入的长整数转换为类对象。否则,向量的所有元素都应为 0。

我尝试编写代码,但可以写到这个级别,现在卡住了。 附言我是 C++ 初学者

class HugeInteger
{
  public:
    HugeInteger (long = 0);
    void output (ostream& outs);
  private:
    vector<short> v;
};

/*HugeInteger::HugeInteger (long = 0)
{
    int i=0;
  for (i=0;i<40;i++)
  {
    v.push_back (0);
  }
}*/


void HugeInteger ::output (ostream& outs)
{
  int i = 0;
  outs << "Values in the vector are initialized to" << endl;
  while(i < 40)
  {
    outs << v[i] << "\t";
    i++;
  }
}

int main()
{
  long integer;
  cout << "Enter a long integer" << endl;
//  for(int i=0;i<40;i++)
    cin >> integer;

  HugeInteger test (integer);
  test.output(cout);

  return 0;
}

出现以下错误:

错误 1 ​​错误 LNK2019:未解析的外部符号“public: __thiscall HugeInteger::HugeInteger(long)”(??0HugeInteger@@QAE@J@Z) 在函数 _main 中引用

【问题讨论】:

    标签: c++ class vector constructor


    【解决方案1】:

    默认参数在声明中明确,而不是在定义中。从定义中删除它,例如

    class HugeInteger
    {
      public:
        HugeInteger (long = 0);
        void output (ostream& outs);
      private:
        vector<short> v;
    };
    
    HugeInteger::HugeInteger (long) <--
    {
    }
    

    【讨论】:

    • 我已经解决了这个问题。无论如何,谢谢,但现在我面临另一个问题。请参阅我编辑的帖子。你能帮我解决这个问题吗?
    • 您应该在每个线程中发布一个问题。针对新问题提出新问题。无论如何,您完全删除了该功能,请使用我上面提供的代码(没有箭头)
    • @Macro A. 抱歉。我是堆栈溢出的新手。无论如何,它现在编译得很好,但在运行时会给出一个错误,因为“向量下标超出范围”
    • 那是另一个问题 -> 另一个问题 :)
    猜你喜欢
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    相关资源
    最近更新 更多