我有一个像BigArr,arr,...在标题中声明的数据:
class TableView:public QWidget
{
Q_OBJECT
public:TableView (QWidget * parent = 0);
std::vector < TXdata > BigArr;
std::vector < float > arr;
std::vector < float > arr2;
std::vector < int > arrlocKtab;
std::vector < int > arrlocKrow;
在源文件中,我有一些我从其他地方复制/粘贴的功能,例如:
static void
multiply (float q[4], float value)
{
q[0] *= value;
q[1] *= value;
q[2] *= value;
q[3] *= value;
}
和我做的其他一些功能,如:
void
TableView::ShowContextMenu (const QPoint & pos) // this is a slot
{
如何从头文件中获取声明以在复制/粘贴函数中工作。像:
static void
multiply (float q[4], float value)
{
arr[0]= something...
通过将c / p函数重命名为void TableView :: function并将它们添加到头文件中的函数列表,我得到了一些不好的结果。可能与静态空隙和静态内联空隙有关... Ty
答案 0 :(得分:0)
您必须将multiply函数定义为TableView类的一部分,如下所示:
class TableView:public QWidget
{
...
void multiply(float q[4], float value);
...
};
然后在源文件中定义它,如下所示:
void TableView::multiply(float q[4], float value)
{
...
arr[0] = something;
...
}
如果你不想/不想让它成为TableView的成员,你也可以将TableView的实例传递给multiply()。如果您决定将TableView实例传递给函数,那么您必须考虑如何通过创建getter函数或将其公开来访问类成员。 getter acccessor功能是一个更清洁的解决方案。
无论哪种方式都有效,但如果您决定制作所有成员函数,请考虑设计并确保该类不会变得臃肿,称为低内聚:en.wikipedia.org/wiki/Single_responsibility_principle