在继承场景中使用基结构作为函数参数
Use base struct as function argument in inheritance scenario
我想为不同的hsl - shaders建立一个灵活的继承。遗憾的是,我计划的路线没有成功,我想知道为什么。下面是我正在做的:
我有一个基本结构体和一些继承它的结构体:
struct baseStruct {};
struct childStruct1 : public baseStruct {
int someInt1;
int someInt2;
}
struct childStruct2 : public baseStruct {
float someFloat1;
bool someBool1;
}
和一个纯虚函数的抽象类,声明如下:
class BaseClass {
virtual void Function1(baseStruct& structVal) = 0;
virtual void Function2(baseStruct& structVal) = 0;
}
这是相应的子类:
class ChildClass {
void Function1(baseStruct& structVal);
void Function2(baseStruct& structVal);
}
现在我想能够调用这些函数与不同的结构,其中有baseStruct
作为父:
childStruct1 cS1;
cS1.someInt1 = 5;
CS1.someInt2 = -3;
Function1(cS1);
编译器没有抱怨,但是当我通过我的程序时,我注意到结构体在函数之前填充了值,但是一旦我进入我的函数,结构体就是空的。现在我的第一印象是,这是因为它被"强制转换"到一个空的baseStruct
。有办法实现这样的东西,还是我做错了什么?也许这是可能的,我搞砸了别的地方,但为什么调试器说它是空的?谢谢你!
你在调试器中看到的结构是空的,因为当你输入Function1时,调试器'忘记'关于cs1的任何信息,只知道关于baseStruct(空的)。
如果你做像
childStruct *cs1 = reinterpret_cast<childStruct1>(&structVal) ;
你应该看看那里的一切。
但是这需要你设计的真正问题:你如何告诉,在function1内部,如果你收到了childStruct1或childStruct2?
相关文章:
- 使用不带参数的函数访问结构元素
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 链表,反向函数,数据结构
- 结构向量中自定义结构函数的内存使用
- C++ 中的嵌套结构函数
- 在结构函数之间传递文件路径 C++ 编辑:修复LNK2019错误
- 如何将值从外部传递到结构函数
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- C++结构函数的多个定义
- C++ 另一个标头中的结构函数给出"missing type specifier"
- 如何在C中找到结构/函数的父头文件
- C++二进制文件到结构函数
- C++ 将结构函数作为继承结构中函数的参数传递
- 如何在 main 之外的类中使用结构函数
- 在类中使用结构函数,在基类 c++ 中使用变量
- C++ 结构函数体调用另一个结构函数,同一个模块
- 是存储在对象中的类/结构函数
- Eclipse CDT 在从 std::map 访问时无法解析结构函数
- C++模板自身名称作为模板模板参数在同一模板结构函数内传递
- 如何使用真正的字符串类型来表示类结构函数中的字符串