为什么我收到错误告诉我构造函数没有命名类型?

时间:2013-03-03 21:20:35

标签: c++ compiler-errors codeblocks

我正在使用Code::Blocks。这是我的代码

#include "LargeInt.h"

LargeInt::LargeInt()
{

}

标题

#ifndef LARGEINT_H
#define LARGEINT_H


class LargeInt
{
    public:
        LargeInt();
};

#endif // LARGEINT_H

我得到的错误是

  

'LargeInt没有在我班级的第3行命名类型'

我所做的只是点击文件>新>类,然后开始编码而不改变任何设置或类似的东西。

2 个答案:

答案 0 :(得分:3)

您不应在构造函数中定义运算符。它们应该是CPP文件中的单独方法。

答案 1 :(得分:1)

构造函数应该执行将类型LargeInt的对象置于有效状态所需的任何操作。您似乎正在尝试在构造函数中定义函数operator<<operator+ - 您无法执行此操作:

LargeInt::LargeInt()
{
    LargeInt::operator<<(String input){}
    LargeInt::operator+(LargeInt){}
}

您应该从类定义中定义具有相应声明的每个函数。您的实现文件应如下所示:

LargeInt::LargeInt()
{
    // ...
}

LargeInt LargeInt::operator<<(String str)
{
    // ...
    return some_large_int;
}

istream& operator>>(istream &is, LargeInt &large)
{
    // ...
    return is;
}

ostream& operator<<(ostream &os, LargeInt &large)
{
    // ...
    return os;
}