【问题标题】:<function> is not a member of <class><function> 不是 <class> 的成员
【发布时间】:2014-10-30 21:03:58
【问题描述】:

我已将我的函数“Credit”声明为带有一些参数的私有成员。我的观察是,每当我尝试不带任何参数进行编译时,编译器都会成功编译。但是一旦我使用函数中的参数进行编译,编译器就会出错

“Transaction :: Credit”不是“Transaction”的成员

这是我的代码

class Transaction : public Menu
{
private :

    void Credit(int depost);//{ return 0;}

public :
    void Deposit();
    void Withdraw(){}
    void Transfer(){}
};

void Transaction :: Deposit()
{
       char custid[10]; int deposit;

       clrscr();
       cout << endl << endl << endl << endl << endl;
       cout << "\t\t\t\t  DEPOSIT " << endl;
       cout << "\t\t   Please enter your Customer ID" << endl;
       cin  >> custid;
       cout << "\t\t   Please enter the amount you want to deposit (in Rupees)" << endl;
       cin  >> deposit;

 //      Credit (depost);
}

void Transaction :: Credit (depost)
{

}

我正在使用 Turbo C++,所以请根据这个 IDE 指导我。

【问题讨论】:

  • 定义void Transaction::Credit(depost) 应该有一个depost 的类型说明符,即void Transaction::Credit(int depost)
  • 就是这样!谢谢。但是为什么我们需要一个类型说明符呢? @YoungJohn
  • @Swanav:你为什么不呢? C++ 是一种强大的(无论如何……)静态类型语言。
  • 我知道我很少看到你的代码,但我将使用我的演绎技巧说,从一个名为 Menu 的类派生一个进行银行交易的类几乎是肯定是一个糟糕的设计。
  • 在 C 中,如果没有给出类型说明符,它将默认为 int。 C++ 删除了该默认值并要求对其进行指定。因此,取决于 TurboC++ 是否强制执行该限制,它应该可以工作,或者是语法错误。 TC++的错误信息明显是错误的。

标签: c++ class methods compiler-errors turbo-c++


【解决方案1】:

你错过了depost的类型:

void Transaction :: Credit (int depost)

以大写字母开头的函数名称被认为是不好的做法。类的名称应以大写字母开头。函数和变量的名称应以小写字母开头。

【讨论】:

  • 从大写字母命名函数是不错的做法。这只是一种意见。引用谷歌样式表here:“通常,函数应该以大写字母开头,并且每个新词都有一个大写字母”
  • 投反对票,因为当命名约定完全是主观的时候,你强加了你对命名约定的看法。删除最后一位,我将删除我的反对票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多