【发布时间】:2022-01-03 02:54:58
【问题描述】:
如果以下可能,我想现在。
我有一个名为A 的模板类,它继承自一个名为Base 的类。
在Base 中,我设置了一个write() 函数,为每个派生类重写。
我正在创建一个向量来存储 Base 对象的引用作为打印机 (dataBase)。
我想知道是否可以检索我将其引用传递给dataBase 的A 对象的引用。
我有以下代码:
#include <iostream>
#include <string>
#include <array>
#include <vector>
class Base
{
public:
Base(std::string name):name_(name){}
virtual ~Base(){}
virtual void write()=0;
const std::string& name() const
{
return name_;
}
private:
std::string name_;
};
template< typename T>
class A : public Base
{
public:
A(std::string name):Base(name),name2_(name + "test"){}
~A(){}
void write();
std::string name2_;
};
template< typename T>
void A<T>::write()
{
std::cout << name2_ << std::endl;
}
int main()
{
A<int> one("one");
A<double> two("two");
A<std::array<double,4>> three("three");
std::vector<Base*> dataBase;
dataBase.push_back(&one);
dataBase.push_back(&two);
dataBase.push_back(&three);
for(auto i : dataBase)
{
i->write();
}
A<int>& getOne = lookup("one"); // this is what I want to create
getOne.name2_ = "worked";
for(auto i : dataBase)
{
i->write();
}
return 0;
}
最好的问候
【问题讨论】: