Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.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++;图形绘制的模板类、继承和编写通用代码 背景信息_C++_Inheritance - Fatal编程技术网

C++ C++;图形绘制的模板类、继承和编写通用代码 背景信息

C++ C++;图形绘制的模板类、继承和编写通用代码 背景信息,c++,inheritance,C++,Inheritance,我正在写一个图形绘制程序。我遇到了模板和继承的问题,我不知道如何继续。我不知道我应该如何设计我的代码,使我能够做我想做的事情。(解释如下。) 目标 我有一个模板类,它表示“数据”。它看起来如下所示: template<typename T> class GraphData { std::vector<T> data_x; std::vector<T> data_y; // x and y should be held in separate v

我正在写一个图形绘制程序。我遇到了模板和继承的问题,我不知道如何继续。我不知道我应该如何设计我的代码,使我能够做我想做的事情。(解释如下。)

目标 我有一个模板类,它表示“数据”。它看起来如下所示:

template<typename T>
class GraphData
{
    std::vector<T> data_x;
    std::vector<T> data_y; // x and y should be held in separate vectors
}
它在向量上迭代,并为其中的每一组数据调用
Draw

如何修复它? 我目前的想法大致如下:;我需要为底层数据类实现某种类型的接口,它检索独立于底层类型的值。但这只是一个非常模糊的初步想法,我真的不确定如何实施,因此问题。。。我甚至不确定这是我应该做的


如果不清楚,请问我一个问题,我会更新更多详细信息。

无法理解发生了什么。。。如果要参数化
std::vector
参数的类型T,必须从class
Graph
生成模板。还是有一些问题?图上的箭头代表什么?有时,它们代表的是一种关系,但我猜并不总是如此。@George箭头是“这个类是从那个类继承来的”,例如
GraphData\u Base\u图例
继承自
GraphData\u Base
这有点离题,但是,如果所有箭头都是继承的,您应该根据。较少耦合的设计很可能有助于解决您的问题。在您的情况下,调整父对象类型的唯一方法是参数化子对象。无法理解发生了什么。。。如果要参数化
std::vector
参数的类型T,必须从class
Graph
生成模板。还是有一些问题?图上的箭头代表什么?有时,它们代表的是一种关系,但我猜并不总是如此。@George箭头是“这个类是从那个类继承来的”,例如
GraphData\u Base\u图例
继承自
GraphData\u Base
这有点离题,但是,如果所有箭头都是继承的,您应该根据。较少耦合的设计很可能有助于解决您的问题。在您的情况下,调整父对象类型的唯一方法是参数化子对象。
// In class Graph

void DrawAll()
{
    for(std::vector<GraphData_Drawable*>::iterator it = m_data.begin(); it != m_data.end(); ++ it)
         (*iterator)->Draw(arguments);
} // Draw function takes arguments including a canvas to draw to, but this isn't directly relevant to the question