C++ 在Xcode中创建构造函数时遇到问题

C++ 在Xcode中创建构造函数时遇到问题,c++,xcode,constructor,C++,Xcode,Constructor,由于某些原因,我无法成功地为我的Exponent类创建构造函数。我使用的语法与我之前编写的一个类相同,没有这个问题,但每次我尝试将构造函数命名为与我的类相同的名称,FPL中没有返回值或参数,我总是得到“必须使用”类标记来引用此范围中的“指数” #包括 使用名称空间std; 类指数 { 整数、基数、指数、总数; 公众: Exponent();//使构造函数工作,将total设置为1(使用静态int将数字删除为0,并在每次输入时递增 内部功率(常量内部和BN、常量内部和外部); void input

由于某些原因,我无法成功地为我的Exponent类创建构造函数。我使用的语法与我之前编写的一个类相同,没有这个问题,但每次我尝试将构造函数命名为与我的类相同的名称,FPL中没有返回值或参数,我总是得到“必须使用”类标记来引用此范围中的“指数”

#包括
使用名称空间std;
类指数
{
整数、基数、指数、总数;
公众:
Exponent();//使构造函数工作,将total设置为1(使用静态int将数字删除为0,并在每次输入时递增
内部功率(常量内部和BN、常量内部和外部);
void inputAddDisplay();
void Display();
};
下面是我编写的另一个规范文件,在构造函数上使用相同的语法,但没有像第一个那样出现错误:

#include <iostream>
#include <ctype.h>

using namespace std;

class MyFloat
{
    enum {DefaultSizeTen=10};
    char *Number;

    int NumberOfDigits;
    int MaxNumberOfDigits;

public:

    ~MyFloat();

    MyFloat(const MyFloat & RHS);
    MyFloat();
    MyFloat(unsigned int Input);

    int Digits();
    int MaxDigits();

    MyFloat operator= (const char *Input);
    MyFloat operator= (const MyFloat &X);

    int operator== (const MyFloat &x);

    MyFloat operator+ (const MyFloat &X);
    int operator> (const MyFloat &x);

    friend ostream& operator<< (ostream &Out, const MyFloat & X);
    friend istream& operator>> (istream &In, MyFloat & X);

};
#包括
#包括
使用名称空间std;
类MyFloat
{
枚举{DefaultSizeTen=10};
字符*数字;
整数位数;
整数MaxNumberOfDigits;
公众:
~MyFloat();
MyFloat(常数MyFloat和RHS);
MyFloat();
MyFloat(无符号整数输入);
整数位数();
int MaxDigits();
MyFloat运算符=(常量字符*输入);
MyFloat运算符=(常量MyFloat&X);
int运算符==(常量MyFloat&x);
MyFloat运算符+(常量MyFloat&X);
int运算符>(常量MyFloat&x);
friend ostream&operator>(istream&In、MyFloat&X);
};

我做错了什么?我知道这很简单,我忽略了,但我找不到它。

你有一个与类名相同的变量。Xcode应该告诉你错误所在的行,这样你就知道该在哪里查找。是的,将指数改为指数数完全修复了它。我从来没有想过。有趣。我想我可以有一个与变量名相同的类名,也可以有与构造函数名相同的类名,编译器可以区分,因为一个是类,一个是函数,一个是变量。那么,是否可以保留变量名“Exponent”,并按照Xcode的建议使用“class”在构造函数名称之前?这似乎不是一个有效的解决方案。声明与类同名的变量会隐藏类名,因此当您稍后使用它时,编译器不知道您引用的是类还是变量。
类指数
解决了歧义,但这就是invalid语法。您有一个与类同名的变量。Xcode应该告诉您错误所在的行,以便您知道在哪里查找。是的,将Exponent更改为ExponentNumber完全修复了它。我从未想过这一点。很有趣。我假设我可以有一个与变量名相同的类名,也可以与构造函数相同编译器将能够区分,因为一个是类,一个是函数,一个是变量。那么,是否有可能保留变量名“Exponent”,并按照Xcode的建议使用“class”在构造函数名称之前?这似乎不是一个有效的解决方案。声明与类同名的变量会隐藏类名,因此当您稍后使用它时,编译器不知道您引用的是类还是变量。
类指数
解决了歧义,但这就是invalid语法。
#include <iostream>
#include <ctype.h>

using namespace std;

class MyFloat
{
    enum {DefaultSizeTen=10};
    char *Number;

    int NumberOfDigits;
    int MaxNumberOfDigits;

public:

    ~MyFloat();

    MyFloat(const MyFloat & RHS);
    MyFloat();
    MyFloat(unsigned int Input);

    int Digits();
    int MaxDigits();

    MyFloat operator= (const char *Input);
    MyFloat operator= (const MyFloat &X);

    int operator== (const MyFloat &x);

    MyFloat operator+ (const MyFloat &X);
    int operator> (const MyFloat &x);

    friend ostream& operator<< (ostream &Out, const MyFloat & X);
    friend istream& operator>> (istream &In, MyFloat & X);

};