我最近在 openframework 做作品的时候遇到了一个困难,在实例化一个类的时候我发现如果类本身定义了构造器,那我在实例化的时候就必须带构造器。有没有办法我先声明,然后我再在别的函数里面构造呢?
比如说有这么一个类是这么写的:
class dot {
int speed;
dot(int i )
}
dot::dot(int i ){
speed = i;
}
然后比如我要实例化它的时候我发现是需要这么写:
dot dottest(1);
否则好像他是没有办法被初始化的? 但是实际问题是,我在 OF 中它是带 setup 和 draw 函数的。 通常情况下如果我想在 setup 中初始化这个类,然后在 draw 函数中循环运行它的话,我必须要把这个类声明在函数外,但我只想在 setup 中构造它,但目前好像我测试了好几次都不行。 有没有办法先声明然后在定义呢? 我查到了关于<extern>的用法,但是它似乎并不是我想要的。因为我本质上还是在一个 cpp 文件里面去声明它。 还有一种情况是如果在 h 文件定义,在 cpp 文件中也可以调用。但只要是构造器带了参数的,在 h 文件中好像就没有办法很好的定义这个对象。 我之所以有这个疑问是因为,在 processing 中,实例化可以这么写:
FlowField flowfield;
void setup() {
flowfield = new FlowField(10);
}
void draw(){
}
我查了一下 C++和 java 的 new 的区别,还有声明和定义的区别,本来用的好好的现在越看越懵。所以如果我想模仿上面 processing 这么的写法,我在 C++中应该如何实现呢? 我知道 C++是有默认构造器的,我以前的写法是自己额外写一个函数去初始化类里面的变量。但是前段时间突发奇想想用一下构造器,结果就傻眼了。关于 C++声明和定义的一些相关的介绍我也看了,但还是处于似懂非懂的状态。求大家指条明路。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.