构造函数不允许返回类型,但我用分号关闭了类?

时间:2017-04-25 00:57:07

标签: c++

第一次发帖。这是一个家庭作业问题,但我已按原样提交。这是我自己的决议,因为我们的教授需要永远回归工作。我有一个在头文件中创建的类,我得到"构造函数不允许返回类型错误',但据我所知,我的类用分号关闭。 头文件的目的是获取传递给fname的文本文件。

这是代码,它在第13行终止:

    #ifndef MYLIB
    #define MYLIB
    using namespace std;

    template <class T, int n>

    class ONE
    {
    private:
        T x[n];

    public:
        void ONE(string fname)
{
    //read data into array
    fstream file;
    file.open(fname, ios::in);
    for (int i = 0; i < n; ++i)
    {
        file >> x[i];
    }
    file.close();
}
void Display()
{
    //display array x
    cout << "Original Characters: ";
    for (int i = 0; i < n; ++i)
    {
        cout << x[i] << " ";
    }
    cout << endl;
}
void SortArray()
{
    //sort array x
    sort(x, x + n);
    cout << "Sorted characters: ";
    for (int i = 0; i < n; ++i)
    {
        cout << x[i];
    }
    cout << endl;
}

};
#endif

3 个答案:

答案 0 :(得分:1)

从构造函数定义和声明中删除void。它应该没有返回类型。

void ONE(string fname)
{
  ...
}

应该是

ONE(string fname)
{
  ...
}

答案 1 :(得分:0)

声明构造函数时,根本不应使用返回类型。在您的代码中,您目前有void ONE(string fname),但void不应该在那里。

答案 2 :(得分:0)

它的含义是:构造函数应该没有返回类型;删除它。

   void ONE(string fname)
// ^^^^

这与分号无关。只需阅读错误消息。