gpt4 book ai didi

c++ - 如何使用模板继承访问基类的成员

转载 作者:行者123 更新时间:2023-11-30 01:59:15 25 4
gpt4 key购买 nike

<分区>

我试过c++模板类,但是我发现我不能在类A中访问val,如果我不使用模板,访问它是可以的,即使我不能在B的方法中使用val,我仍然可以在主函数中使用它,这种行为真的很奇怪。有人知道为什么吗?

#include <iostream>
#include <cstdio>
#include "name.h"
#include <map>
using namespace std;

template<class T>
class A {
public:
T val;
A(T obj) {
val = obj;
}
virtual void print() {
cout << "in A" << endl;
}
};

template<class T>
class B: public A<T> {
public:
B(T obj):A<T>(obj) {
}
void print() {
//if you unccomment this line, this program can't be compiled,
// cout << val << endl;
cout << "in B" << endl;
}
};

int main() {
string str = "`12";
B<string> * b = new B<string>(str);
A<string> * a = (A<string> *) b;
b-> print();
a-> print();
cout << a-> val << endl;
//but it is ok to access val like this
cout << b-> val << endl;
return 0;
}

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