Nic*_*mon 1 c++ compiler-errors
在这个完整的代码中:
class foo
{
public:
foo(const int pin);
};
class bar {
public:
// Constructor
bar(const int dataPin) : dataPin_ (dataPin) { }
private:
const int dataPin_;
foo myFoo_ (dataPin_); // instance of foo
};
int main (void)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用g ++ 4.8.4我收到错误:
g++ -Wall -c "test.cpp" (in directory: /home/nick/Development)
test.cpp:14:17: error: ‘dataPin_’ is not a type
foo myFoo_ (dataPin_); // instance of foo
^
Compilation failed.
Run Code Online (Sandbox Code Playgroud)
使用clang 3.4-1ubuntu3我得到:
test.cpp:14:17: error: unknown type name 'dataPin_'
foo myFoo_ (dataPin_); // instance of foo
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
为什么要在这里输入类型?这是试图创建foo一个类变量的实例bar.变量dataPin_直接在上面声明.
如果我将带有错误的行更改为this,它会干净地编译:
foo myFoo_ (int dataPin_); // instance of foo
Run Code Online (Sandbox Code Playgroud)
它foo myFoo_ (dataPin_);作为函数声明读取:myFoo_是一个函数接受dataPin_并返回a foo.这就是为什么它期待一个类型名称( ).
要解决此问题,请myFoo_在构造函数中初始化,就像使用dataPin_:
bar(const int dataPin) : dataPin_ (dataPin), myFoo_(dataPin) {}
Run Code Online (Sandbox Code Playgroud)