gpt4 book ai didi

c++ - 如何对指向基类的指针执行 I/O?

转载 作者:行者123 更新时间:2023-11-28 07:25:42 25 4
gpt4 key购买 nike

例如,我有一个基类A及其派生类BC等。我有一个指针指向 A 的数据。它可能是 new Bnew C 等等。任何简单的方法来写入和读取流的指针?我的问题是关于如何了解具体类型。一个例子来说明我的意思。

struct A            { int i; };
struct B : public A { char c; };
struct C : public A { float f; }

struct Data
{
unique_ptr<A> mA;
};

Data data;

用户处理数据,然后写入文件并从文件中读入。

最佳答案

答案是你没有,你使用虚函数。

#include <iostream>

struct A {
int i;
virtual void describe() {
std::cout << "A:" << i << std::endl;
}
};
struct B : public A {
char c;
virtual void describe() override {
// Assume a 'B' wants to also output the A stuff.
std::cout << "B:" << c << ":";
A::describe();
}
};
struct C : public B {
float f;
virtual void describe() override {
// Assume a 'C' wants to also output the B stuff and A stuff.
std::cout << "C:" << f << ":";
B::describe();
}
};

#include <vector>

int main() {
std::vector<A*> bar;
A a;
a.i = 10;
B b;
b.i = 22;
b.c = 'b';
C c;
c.i = 5;
c.c = 'X';
c.f = 123.456;
bar.push_back(&a);
bar.push_back(&b);
bar.push_back(&c);
for (size_t i = 0; i < bar.size(); ++i) {
bar[i]->describe();
}
}

http://ideone.com/12BEce

关于c++ - 如何对指向基类的指针执行 I/O?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com