【问题标题】:expected type-specifier and cannot convert ‘int*’ in initialization预期的类型说明符,无法在初始化中转换“int*”
【发布时间】:2015-01-18 21:29:42
【问题描述】:

我有大量的代码,所以我尝试在这里只包含代码的相关部分

当我的 cpp 文件包含在另一个 cpp 文件中时,它们编译没有问题。

我还有一个名为的文件。这之前编译得很好,直到我尝试将上面的文件包含在

我得到未定义的引用错误,即使它们是在 cpp 文件中定义的

发生了什么事?是否存在联动错误?我需要在 makefile 中进行更改吗?

【问题讨论】:

  • 你在课后少了一个分号。
  • 哦,实际的类后面有一个分号。当我尝试修改其内容以将其发布到问题中时,我只是忘记包含它
  • 好的。还有哪些不同之处?
  • 你为什么使用Asp::Asp(input)?那不应该是 Asp* asp = new Asp(input) (因为你的 using 子句)还是完整解析的 ASP:Asp* asp = ASP::Asp(input) 包括命名空间?
  • @WhozCraig,为什么new ASp::ASp(input); 会被视为int*

标签: c++ class oop namespaces


【解决方案1】:

使用

ASp* asp = new ASp(input);

为我工作。不知道为什么要使用

ASp* asp = new ASp::ASp(input);

是个问题。需要进一步挖掘才能找到。

更新

using declarations in main (C++) 解决了同样的问题。该问题的工具链是 MS Visual Studio。那里的答案指出了同样的问题,但没有解释为什么new Asp::Asp(input); 的类型为int*。 OP 报告的错误消息似乎是 g++ 特定的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2019-05-12
    • 2016-07-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    相关资源
    最近更新 更多