c++ - 类型 ‘serial::serial’ 命名构造函数,而不是 C/C++ 中的类型

标签 c++ c++11 constructor syntax-error

在 Ubuntu 上使用 Eclipse 我正在尝试定义函数:

serial::serial new_serial(){
    serial handle = new serial;
    handle.setName("ttyUSB0");

    return handle;
}

使编译器出错并导致它显示错误。

Type ‘serial::serial’ names the constructor, not the type 

如何解决这个问题?是什么导致它出错?

最佳答案

正如消息所说:您有一个名为 serial 的类,它包含一个构造函数,该函数也被命名为 serial , 所以 serial::serial表示 serial serial 内的函数类(class)。您不能将其用作函数的返回类型,因为返回类型必须是类型,例如类。

您可能希望函数的返回类型为 serial (按值返回类的实例)或类似指针的东西,例如serial* ,或(最好)std::unique_ptr<serial> .但是不清楚你是想返回一个对象还是一个指针,因为行

serial handle = new serial;

也是错误的。 new返回一个指针,你不能将指针分配给一个用来保存对象的变量。 (您可能会想到 Java 或 C#,其中大多数变量都是引用。C++ 不同。)

关于c++ - 类型 ‘serial::serial’ 命名构造函数,而不是 C/C++ 中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24401627/

相关文章:

c++ - 在 C++(和 MoveIt API)上将成员函数的 std::bind 作为参数传递时出现问题

javascript - 为什么在 javascript 中过滤扩展数组的类的对象调用它的构造函数?

c++ - 可能的 VS2012 编译器错误(可能在整个程序优化中?)

c++ - 用户替换 Malloc

c++ - std::bind 有多少个参数(VC 11 只支持 4 个)

coldfusion - 关于 ColdFusion 组件构造函数名称的问题

c++ - 我分配了一个指针,它自己清空了

c++ - C驱动编程蓝屏死机

c++ - 模板参数模棱两可/推导了参数的冲突类型

c++ - 在类似于 Scott Meyer 的单例惯用语的实现中使用新线程安全来实例化单例吗?