嗨,我在初始化2D对象数组时遇到问题。
该类是TermFrequency(Key,string,int,double);这就是我初始化对象的动态2D数组的方式:

// TermFrequency tfreq [v_word.size()][totalNumberOfDocuments];
   TermFrequency** tfreq = new TermFrequency*[v_word.size()];
   for(size_t i = 0; i < v_word.size(); ++i)
       tfreq[i] = new TermFrequency[totalNumberOfDocuments];

我知道为什么我得到错误:
  • 没有匹配的函数来调用'TermFrequency::TermFrequency()'|
  • 注意:TermFrequency::TermFrequency(Key,std::string,int,double)|

  • 我只想知道如何解决?

    谢谢。

    好的,我添加了 DEFAULT 构造函数TermFrequency,它可以正常工作:TermFrequency();现在,例如,我可以添加新对象,对吧?

    那个实现被认为正确吗?
     For(int i = 0; i < Length1; i++){
        for(int j = 0; j < length2;j++){
           tfreq[i][j] = TermFrequency(v_word[i],documents[j],j,wordCount);
        }
        }
    

    这就是输出:
      for( size_t i = 0 ; i < v_word.size() ; i++ )
        {
            for(int j = 0; j < totalNumberOfDocuments;j++)
            {
                 cout << tfreq[i][j].getTermFrequency() << endl;
            }
        }
    

    最佳答案

    这条线

    TermFrequency tfreq[v_word.size()][totalNumberOfDocuments];
    

    尝试默认构造TermFrequency对象数组。换句话说,它将调用数组中所有元素的默认构造函数。

    问题是您的TermFrequency类已经有一个用户定义的构造函数(TermFrequency::TermFrequency(Key, std::string, int, double)覆盖了编译器生成的默认构造函数。您需要自己包含它:
    class TermFrequency
    {
        public:
             TermFrequency() { ... }
        // ...
    };
    

    09-06 15:09