在 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/