错误:'xxx'不是类型
Error: 'xxx' is not a type
在此完整代码中:
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
它正在阅读foo myFoo_ (dataPin_);
作为一个函数声明:myFoo_
是一个函数,接受dataPin_
并返回foo
。这就是为什么在(
)
中需要一个类型名。
myFoo_
,就像您对dataPin_
所做的那样:
bar(const int dataPin) : dataPin_ (dataPin), myFoo_(dataPin) {}
这里你应该添加类型非变量,这是函数签名,它应该有类型非变量。
foo myFoo_ (dataPin_); // instance of foo
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- Eclipse/CDT_C++给出"语义错误_"类型XXX无法解决"。项目运行
- YYY 中的错误 XXX 未命名类型
- 错误:xxx 不命名类型
- 错误:“xxx”没有命名类型
- C/C++代码中的奇怪之处(ISO C++禁止声明没有类型的"xxx")
- XXX 中发生了类型 'System.ExecutionEngineException' 的未处理异常.exe
- 错误:'xxx'不是类型