在leetcode 用c++刷题时,本想将代码复制到vscode中编写运行,但是碰到了无法调用class中函数的问题。
1.class的位置
class 并不需要写在main中,在main上方即可。
2.public与private
public中的数据与函数允许外界访问,private的数据与函数不允许外进访问。通常leetcode给出的模板都是一个名为Solution的class,在其之下有一个public的函数,答题者需要在其中编写答案。
3.调用class中的函数
这个问题耗费了我一下午的时间去调试。凭印象调用函数Classname::membername
总是失败,提示错误为非静态成员引用必须与特定对象相对C/C++(245)
,后来经过查阅资料,才发现对public的函数,如果静态static
的应该用Classname::menbername
来调用,非静态函数应该通过classname.membername
来调用。
在我将调用方法更改之后,发现还是不行,提示错误为不允许使用类型名C/C++(254)
。经查,原因是class Solution
中仅需要填写答题的函数,并未也并不需要给出数据格式,因此我的数据与该class无关。
最后,我将函数改为static
,使用Classname::membername
调用解决了这个问题。
总结
将leetcode模板复制到vscod中进行编写时,应该在函数名前加上static,在main中调用时使用相应方法。