让Xcode在虚函数中强制数据类型和常量
Getting Xcode to enforce data types and constness across virtual functions
所以,我注意到Xcode (v6.2)似乎不像Visual Studio那样在纯虚函数中强制执行constness。几个问题:1)如果我在基类中有一个纯虚类,它有一个const参数,并且在派生类中定义时它不是const…符合ANSI标准,并且:2)有没有办法让Xcode抛出一个错误像Visual Studio做的?
在第一个块中我们有头文件,它有一个纯虚函数。
// Some header file (assume include guards and all that fun stuff)
namespace Testing123
{
class ClassA
{
public:
// ************ NOTICE THAT THE ARGUMENT IS CONST!!! ***************
virtual double somePureVirtualFunk( const double someNumber ) = 0;
protected:
inline double getSomeFunkyNumber(){ return m_something; };
private:
double m_something;
}
}
现在,在第二个文件中,我们有一个派生类的头文件,带有一个内联函数,该函数定义了ClassA的纯虚函数…
// Some header file (assume include guards and all that fun stuff)
#include "ClassA.h"
namespace Testing123
{
class ClassB : public ClassA
{
public:
// ************ NOTICE THAT THE ARGUMENT IS **NOT** CONST!!! *************
inline virtual double somePureVirtualFunk( double someNumber )
{ return this->getSomeFunkyNumber(); };
}
}
所以我认为这证明了我所看到的,在ClassA中somePureVirtualFunk被声明为具有const参数,当它在ClassB中定义时,const缺失。Visual Studio善意地提醒你这个事实,Xcode没有。有没有办法让Xcode警告我这个?
1)符合标准。忽略顶级const
s,因此
virtual double somePureVirtualFunk( const int someNumber ) = 0;
与
完全相同virtual double somePureVirtualFunk( int someNumber ) = 0;
在函数a 声明中设置const
是没有意义的,因为它被忽略了。它可以用作函数定义中使用的实现细节,在这里它只意味着局部形参不能在函数体中修改。
double ClassB::somePureVirtualFunk(const int someNumber )
{
// someNumber cannot be modified here.
// But it is local, so nobody needs to know.
}
注意,这只适用于顶级const
,如在您的示例中。
2)我不确定这个警告有多有用,因为函数签名是相同的。一个好的警告应该是告诉您在函数声明中有一个顶级const限定符,并且它没有作用。
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在C++中打印指向不同基元数据类型的指针的内存地址
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何计算数据类型的范围,例如int
- C++中数据类型修饰符的顺序
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 特定数据类型的模板类
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 有没有办法提示用户使用哪种数据类型作为模板 c++
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 如何获取C++字符数据类型的地址
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- 构造智能点数据类型以及普通数据类型的通用方法
- 如何使映射键具有两种不同的数据类型?
- 从 Typedef 数据类型中删除常量
- C++中的数据类型相当于 vb6 中的常量货币
- 说变量和常量是数据类型的对象在技术上正确吗?
- 让Xcode在虚函数中强制数据类型和常量