是否可以使用自动类方法初始化自动变量?
Is it possible to initialize auto variable with auto class method?
我遇到了一些关于使用 c++14auto
说明符的问题。
我在头文件中定义了类,如下所示,
class MiscFeature
{
public:
MiscFeature();
auto getData();
auto setData(int);
private:
int data;
};
然后在主文件中调用该方法,
int
main(int argc, char** argv)
{
MiscFeature * misc = new MiscFeature();
auto val = misc->getData();
cout<<val<<endl;
val = misc->setData(6);
cout<<val<<endl;
}
然后用g ++编译,我得到以下错误:
测试.cpp:21:30:错误:扣除
auto
前使用auto MiscFeature::getData()
auto val = misc->getData();
如果我在主文件中定义类似的函数,没关系。
我该如何解决这样的问题?还是这是一个限制?
我想我找到了问题的答案。
由于类成员是使用 auto 说明符声明的,因此在调用该方法时,应定义并知道函数。
但是,在我上面的代码示例中,主文件仅引用头文件,因此函数仍然未知。所以编译器抱怨道。
然后我在头文件中声明了另一个内联函数并再次测试。 代码如下,
class MiscFeature
{
public:
MiscFeature();
int getData();
bool setData(int);
auto testauto() { return 7;}
private:
int data;
};
然后在主文件中调用方法testauto(),如下所示,
auto * misc = new MiscFeature();
auto val = misc->getData();
cout<<val<<endl;
auto ret = misc->setData(6);
cout<<ret<<endl;
auto val1 = misc->testauto();
cout<<val1<<endl;
然后编译并再次运行它,它起作用了。
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- 同一函数中的静态函数变量初始化顺序
- C 语言中的静态变量初始化
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 类POD成员变量初始化
- 尝试捕获类变量初始化的范围
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 多变量初始化编译器支持