C++ 错误:在';之前需要构造函数、析构函数或类型转换';代币

C++ 错误:在';之前需要构造函数、析构函数或类型转换';代币,c++,compiler-errors,C++,Compiler Errors,简单地问:这里出了什么问题 class c { public: static void v() { int var = 0; } static int i() { return 1; } }; c::i(); // Throws error message c::v(); // Also throws error message void setup() { } void loop() { } 错误消息包括: 编辑草图 /tmp/698769749/

简单地问:这里出了什么问题

class c {
  public:
  static void v() {
    int var = 0;
  }

  static int i() {
    return 1;
  }
};

c::i(); // Throws error message
c::v(); // Also throws error message

void setup() {
}

void loop() {
}
错误消息包括:

编辑草图

/tmp/698769749/CompilingTests/CompilingTests.ino:12:7:错误:应为 “;”之前的构造函数、析构函数或类型转换代币

c::i()

^

/tmp/698769749/CompilingTests/CompilingTests.ino:13:7:错误:应为 “;”之前的构造函数、析构函数或类型转换代币

c::v()

^

退出状态1


这个错误消息应该告诉我什么?

突出的问题之一是您的函数没有公共访问权限。

语句
c::i()
c::v()
不允许在全局范围内,它们应该包含在函数中。此外,这些静态成员函数应该声明为公共的,以便在
c
之外访问:

struct c {

  static void v() {
    int var = 0;
  }

  static int i() {
    return 1;
  }
};

void g()
{
    c::i();
    c::v();
}

void setup() {
}

void loop() {
}

演示:

你想用
c::i()做什么和下一行?
c::i();//抛出错误消息c::v();//还抛出错误消息
这到底意味着什么?FWIW,我发现只有静态函数的类有点异味。我想知道的是,他想用这行代码实现什么,而不是编译器的输出是什么。Hawky askedI删除了不必要的代码,并将其分解为最必要的内容。我只是看到了
public
问题,并在我的帖子中解决了这个问题。我“忘记”把这些语句放到 StUpUTE()/<代码中(很明显我对C++是很新的……)。我只是不明白错误信息。谢谢大家!@对C++诊断的理解是一项很难的技能。这段对话已经结束。