我遇到了一些关于使用c ++ 14的auto
说明符的问题。
我在头文件中定义了类,如下所示
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 ++编译,我得到以下错误:
test.cpp:21:30:错误:在扣除
auto MiscFeature::getData()
之前使用auto
auto val = misc->getData();
如果我在主文件中定义类似的功能,那没关系。
我怎么能解决这个问题?或者这是一个限制?
答案 0 :(得分:0)
我想我找到了问题的答案
当使用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;
然后再次编译并运行它,它有效。