类中带有g++的默认变量
Default variables in class with g++
我有一个类,它只能以某种方式初始化。作为错误检查的一部分,我有一个bool quality
,我希望它的默认值为零,除非调用了正确的构造函数(然后检查参数以查看它是否被正确调用)。
class CParameters {
private:
bool quality = 0;
//Plus some additional code
};
给我
warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
bool quality = 0;
^
或者:
class CParameters {
private:
bool quality;
public:
CParameters;
};
CParameters::CParameters
{
quality = 0;
}
给我以下错误:
error: declaraion does not declare anything [-fpermissive]
CParameters;
^
备选2:
class CParameters {
private:
bool quality;
public:
CParameters();
bool good();
};
CParameters::CParameters()
{
quality = 0;
}
bool CParameters::good()
{
return quality;
}
然后称之为
CParameters CLI;
CLI.good();
给出以下错误:
error: request for member 'good' in 'CLI', which is of non-class type 'CParameters()'
编辑:第二个选项是正确的。CParameters()是非类的原因是我太笨了,在编译其他文件时无法真正编译parameters.cpp
对于您的"alternate",您错过了一些括号:
class CParameters {
private:
bool quality;
public:
CParameters();
// ^^^
};
错误显示:
错误:声明不声明任何内容[-fpermission]C参数;
没有括号,它只是一个类型,它什么也不声明。加上括号,这是构造函数的原型。
如果您想检查correct构造函数是否被调用为只有一个正确的构造函数,那么编译器可能会发现错误,而不必在运行时进行检查。
编辑。。。。定义中还需要括号:
CParameters::CParameters()
// ^^^^
{
quality = 0;
}
就像前面提到的doctorlove一样,您在构造函数中错过了()。
不能在类中指定默认值。只能在构造函数中执行。如果我理解正确的话,你想要的是这样的东西:
CParameters::CParameters () : quality(false)
{
//your checking
quality = true;
}
或者,如果参数错误,请执行ctor抛出。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- C++对象默认变量
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 变量始终在函数中重置为默认值
- 为什么 std::move 不将默认移动构造函数中的源变量更改为默认值?
- 如果输入类型与目标类型不同,"cin"变量是否重置为某个默认值?
- C++中未初始化成员布尔变量的默认值是多少?
- char指针或char变量的默认值是多少
- const变量是否可以在具有默认值的参数中赋值(作为可选参数)
- F.54:如果捕获此变量,请显式捕获所有变量(无默认捕获)
- 有没有更优雅的方法在构造函数中声明默认变量?
- 变量不能在 lambda 中隐式捕获,并且没有使用 switch 语句指定捕获默认值
- make_shared是否对每个成员变量执行默认初始化(零初始化)
- C++什么时候是使用无默认构造函数与getter和setters与直接调用类中的变量的正确时机
- 使用默认构造函数引用成员变量初始化错误
- C++中用于将默认变量类型设置为int的任何选项
- 类中带有g++的默认变量
- LibCinder:着色器参数的默认变量名