C++ Visual Studio 非标准语法使用 '&' 创建指向成员的指针
Posted
技术标签:
【中文标题】C++ Visual Studio 非标准语法使用 \'&\' 创建指向成员的指针【英文标题】:C++ Visual Studio non-standard syntax use '&' to create a pointer to memberC++ Visual Studio 非标准语法使用 '&' 创建指向成员的指针 【发布时间】:2016-09-04 21:56:05 【问题描述】:我正在学习 C++,在我的课堂上我们将讨论构造函数和重载构造函数,我只是想知道如何让这个重载构造函数工作。
我在 Double.cpp 中收到错误 C3867“'Integer::toInt': non-standard syntax; use '&' to create a pointer to member”
过去 2 小时我一直坚持这一点,现在我不知道如何继续前进。感谢任何帮助。
双.h:
#ifndef DOUBLE
#define DOUBLE
class Integer;
class Double
public:
double num;
public:
void equal(double value);
double toDouble()const;
// Constructors
Double();
Double(Double &val);
Double(double val);
Double(Integer &val); // This is the trouble one
;
#endif // !DOUBLE
Double.cpp
void Double::equal(double value)
this->num = value;
Double::Double()
this->equal(0.0);
Double::Double(Double &val)
this->equal(val.num);
Double::Double(double val)
this->equal(val);
Double::Double(Integer &val)
this->equal(val.toInt); // I get the error right here
整数.h:
#ifndef INTEGER
#define INTEGER
class Double;
class Integer
private:
int num;
public:
void equal(int value);
int toInt()const;
//Constructors
Integer();
Integer(Integer &val);
Integer(int val);
;
#endif // !INTEGER
和整数.cpp
int Integer::toInt()const
return this->num;
//Constructer
Integer::Integer()
this->equal(0);
Integer::Integer(Integer &val)
this->equal(val.num);
Integer::Integer(int val)
this->equal(val);
【问题讨论】:
这是编译器说你不小心传递了一个变量(val.toInt
)而不是调用函数val.toInt()
的方式。以下是MSVS error C3867的完整详细信息
【参考方案1】:
需要调用Integer
的toInt
方法:
this->equal(val.toInt());
【讨论】:
为了添加到您的(完全准确的)答案中,错误消息指的是旧VS
版本的扩展(有些人会称之为错误),包括你可以像这样获取成员函数的地址val.toInt
,而唯一的标准语法是&Integer::toInt
。以上是关于C++ Visual Studio 非标准语法使用 '&' 创建指向成员的指针的主要内容,如果未能解决你的问题,请参考以下文章
C ++ Visual Studio“非标准语法;使用'&'创建指向成员的指针”[关闭]
(Visual Studio 杂记) )—— Visual Studio 如何 设置 C++ 标准版本