码工如何能不被牵着鼻子走

g
gooog
楼主 (北美华人网)
以前的一个程序 struct node {     int x;     node *next; };
int main() {     node *root;     root = new node;     root->next = 0;     root->x = 12; }
完全没错。但是加入了struct的constructor后
struct node {     int x;     node *next;     node(int y) : x(y), next(NULL) {} };
root = new node;这一行就提示错误了。 c++的struct从什么时候开始,可以有自己的构造函数的?我记得只有class才能有构造函数的。
当c++这些底层的规则变化了,码工编程的时候也要随着改变。 码工如何能不被牵着鼻子走呢?
周瑜
谁加的构造函数找谁算账
j
joeblackgod
我记得从我认真学c++开始,标准就说c++的struct可以有constructor了。
你记得可能是C吧。
对于这个case,如果你是对的,你可以用非常老版本的c++标准。但是这早晚是会被淘汰的。
没办法,马工就是要跟着标准evolve。技术类工作都一样:律师也要了解法律和判例的变化,医生的guideline也是会更新的
g
gooog
我记得从我认真学c++开始,标准就说c++的struct可以有constructor了。
你记得可能是C吧。
对于这个case,如果你是对的,你可以用非常老版本的c++标准。但是这早晚是会被淘汰的。
没办法,马工就是要跟着标准evolve。技术类工作都一样:律师也要了解法律和判例的变化,医生的guideline也是会更新的
joeblackgod 发表于 2022-08-03 12:11

以前学的struct都没有这个constructor。
好像从c++11开始的。就搞出了这个类似class的constructor来。
l
lilysnow
回复 1楼gooog的帖子
难道错误不是在于call new node的时候就要求输入一个初始值吗,或者定义node的init函数时候在没有输入初始值时给一个默认初始值
y
youarethebest
把鼻子切掉
s
stones
回复 1楼gooog的帖子
c++里面自古以来 struct 就等同于 class, 编译成一样的东西,so自古以来就可以有 ctor 可能默认 private/public不一样,太久不用,忘了。
a
aegeanboat
自从你们来了之后,把华人提高了了一个档次😄
p
poppyjasper
从来不用没有必要的feature

t
teabucket
POD type
g
gokgs
这? 这是 C++ 基本概念。 哈哈。
the only difference between a struct and a class is things are default as public in struct while it is private in class.
这种 syntax error 都很简单处理。
你这种情况 可以加一个 default constructor 就搞定了, 如果 new 的地方太多。