错误:' xxx'不是一种类型

时间:2016-06-26 23:27:44

标签: 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;
  }

使用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.

使用clang 3.4-1ubuntu3我得到:

test.cpp:14:17: error: unknown type name 'dataPin_'
    foo myFoo_ (dataPin_);  // instance of foo
                ^
1 error generated.

为什么要在这里输入类型?这是尝试创建foo的实例作为bar的类变量。变量dataPin_直接在上面声明。

如果我将带有错误的行更改为此行,则会干净地编译:

    foo myFoo_ (int dataPin_);  // instance of foo

2 个答案:

答案 0 :(得分:7)

它正在阅读foo myFoo_ (dataPin_);作为函数声明:myFoo_是一个取dataPin_并返回foo的函数。这就是为什么它需要( )中的类型名称。

要解决此问题,请在构造函数中初始化myFoo_,就像使用dataPin_一样:

bar(const int dataPin) : dataPin_ (dataPin), myFoo_(dataPin) {}

答案 1 :(得分:-1)

这里你应该添加类型而不是变量,这是函数签名,它应该有类型而不是变量。

foo myFoo_ (dataPin_);  // instance of foo