Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个问题叫什么?如果通过基类型传递结构,则子体类型中的字段在方法中不可用_C++ - Fatal编程技术网

C++ 这个问题叫什么?如果通过基类型传递结构,则子体类型中的字段在方法中不可用

C++ 这个问题叫什么?如果通过基类型传递结构,则子体类型中的字段在方法中不可用,c++,C++,我正在研究一个类似这样的问题: struct A { ... } struct B : A { int more; } void Method(A a) { ... } 它的工作原理是这样的:您将B的一个实例传递到方法中,然后在body中不能再访问more字段了 我试着记住这个名字,但我记不起来了。在谷歌上搜索只会让我无所适从 有人能告诉我名字吗?这样我就可以继续研究更多的东西了。我想实际上你说的是切片。当您通过一个基类型的参数通过值传递某个派生类型的C++对象时,派生的部分是“切片”的,并

我正在研究一个类似这样的问题:

struct A { ... }
struct B : A { int more; }

void Method(A a) { ... }
它的工作原理是这样的:您将B的一个实例传递到方法中,然后在body中不能再访问
more
字段了

我试着记住这个名字,但我记不起来了。在谷歌上搜索只会让我无所适从


有人能告诉我名字吗?这样我就可以继续研究更多的东西了。

我想实际上你说的是切片。当您通过一个基类型的参数通过值传递某个派生类型的C++对象时,派生的部分是“切片”的,并且即使通过将其转换为派生类型也无法访问。p> 这个问题的解决办法是使用一个参考参数,即

然后,您可以将
B
对象传递到此函数,而不会破坏
B
部分

void Method(A &a) { ... }