我正在尝试调用一个函数。 这些愚蠢的编译错误的原因是什么?
I'm trying to call a function. What is the cause of these silly compilation errors?
我正在尝试运行我编写的这个c++程序。我在Visual C++中得到以下错误:
1>c: \users\server\sdesktop\problem7\problem7\main.cpp(26):错误C3867:"Payment::getamount":函数调用缺少参数列表;使用'&Payment::getamount'以创建指向成员的指针
1>c: \users\server\sdesktop\problem7\problem7\main.cpp(74):错误C3867:"cashPayment::paymentDetails":函数调用缺少参数列表;使用'&cashPayment::paymentDetails'创建指向成员的指针
1>c: \users\server\sdesktop\problem7\problem7\main.cpp(75):错误C3867:"CreditCardPayment::paymentDetails":函数调用缺少参数列表;使用'&CreditCardPayment::paymentDetails'创建指向成员的指针
代码是:
#include <iostream>
#include <cstring>
using namespace std;
class Payment
{
private: float amount;
public: Payment(float=0.0);
void paymentDetails();
float getamount();
void setamount(float);
};
Payment::Payment(float a)
{
setamount(a);
}
void Payment::setamount(float a){amount=a;}
float Payment::getamount(){return amount;}
void Payment::paymentDetails()
{
cout<<"The amount of payment is : "<<getamount<<"$"<<endl;
}
class cashPayment: public Payment
{
public: cashPayment(float=0.0);
void paymentDetails();
};
cashPayment::cashPayment(float a):Payment(a){};
void cashPayment::paymentDetails()
{
cout<<"The payment in cash is : "<<getamount()<<"$"<<endl;
}
class CreditCardPayment: public Payment
{
private: char* name;
int creditnumber;
int day,month,year;
public: CreditCardPayment(char[]=" ",int=0, int=0, int=0, int=0 ,float=0.0);
void paymentDetails();
};
CreditCardPayment::CreditCardPayment(char* n, int cn, int d, int m, int y, float a):Payment(a)
{
int l=strlen(n);
name = new char[l+1];
strncpy(name,n,l);
name[l]=' ';
creditnumber=cn;
day=d;
month=m;
year=y;
}
void CreditCardPayment::paymentDetails()
{
cout<<"Credit Card Holder Information & Payment: "<<endl;
cout<<"Name is "<<name<<endl;
cout<<"Credit Number is "<<creditnumber<<endl;
cout<<"Expiration Date (Day / Month / Year) is "<<day<<"/"<<month<<"/"<<year<<endl;
//cout<<"Payment is "<<Payment::getamount()<<"$"<<endl;
}
int main()
{
CreditCardPayment cc1("Mohammad",936623,21,9,2011,3000);
cashPayment cp1(4500);
cp1.paymentDetails;
cc1.paymentDetails;
system("pause");
return 0;
}
在这里:
void Payment::paymentDetails()
{
cout<<"The amount of payment is : "<<getamount<<"$"<<endl;
}
编译器告诉您,您可能指的是CCD_ 1而不是CCD_。
此处类似:
cp1.paymentDetails;
cc1.paymentDetails;
你的意思可能是:
cp1.paymentDetails();
cc1.paymentDetails();
与其他一些语言不同,在C++中,当调用不带参数的函数时,必须在括号中提供一个空的参数列表。
cp1.paymentDetails;
cc1.paymentDetails;
错误状态为"函数调用缺少参数列表"。您的函数调用确实缺少参数列表。您需要使用()
来调用以下函数:
cp1.paymentDetails();
cc1.paymentDetails();
错误的后半部分读作"'&Payment::getamount'以创建指向成员的指针",这是一个"有用"的提示,如果您想要获取函数的地址,则需要使用一元&
(的地址)运算符。
之所以有此提示,是因为运算符不是计算非成员函数地址所必需的(为了与C兼容和用于遗留代码),而是计算非静态成员函数地址时所必需的。
- std::is_base_of表示ctor编译错误
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- 如何修复sfml c++代码编译错误
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- vscode下的Arduino代码出现意外编译错误
- 第三方 API 中的编译错误 - Visual Studio
- std::cout输出int时出现编译错误
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 提升图广度优先搜索前置编译错误
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- 我在C++中遇到了这个奇怪的编译错误
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 使用 std::enable_if 限制派生类的模板参数时出现编译错误
- 现代OpenGL和GLEW Libraray的编译错误
- C++ 编译错误:意外的类型名称"字符串":预期的表达式
- C ++程序编译错误,找不到/访问文件
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 为什么传递非静态成员函数会导致编译错误?