【问题标题】:C++ Error: "member Engine::x is not a type name"C++ 错误:“成员 Eng​​ine::x 不是类型名称”
【发布时间】:2014-08-17 21:32:52
【问题描述】:

我正在构建一个标准的 4 函数计算器,并且我试图将两个数字作为用户输入的参数传递出去。在我的 Engine.h 类中我已经声明了

float num1, num2;

我有这个功能

float Add(num1, num2);

在这些参数中,num1 和 num2 都有标题中所述的错误:“Error: member Engine::num1 is not a type name。”我很困惑为什么这些会带来错误,这不是参数的工作原理吗?

【问题讨论】:

  • 在函数声明中提供参数的类型:float Add(float num1, float num2);
  • 谢谢。我已经做了足够长的时间,觉得我不需要再参考教程了,但显然进展并不顺利。

标签: c++ types parameters


【解决方案1】:

只需将成员函数声明为

float Add() const;

由于该函数将处理数据成员 num1 和 num2,它不需要参数。例如,它可以定义为

float Engine::Add() const
{
    return num1 + num2;
}

至于错误那你忘了写参数的类型说明符。

代替

float Add(num1, num2);

至少应该有

float Add( float num1, float num2);

【讨论】:

  • 这里假设 Add 是一个成员函数,并且 num1 和 num2 是一些没有被提及的类的成员变量。
【解决方案2】:

我遇到了同样的错误,因为我是菜鸟,我认为您可以在其声明中调用成员的构造函数,就像在函数中一样:

private:
    MySmartClass myClass(getMySetting());

不用说,你不能这样做,要调用一个成员的构造函数你需要这样做:

public:
        MyContainingClass() : myClass(getMySetting()) {}
                              ^^^^^^^^^^^^^^^^^^^^^^^

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多