检查Template first Argument之后声明的函数是否为NULL(传递向量和数组)

时间:2015-07-25 22:48:10

标签: c++ templates

在处理我的其他项目时,我遇到了我认为是重载错误的内容。我开了一个新项目,研究了重载,这里是快速代码:

GridView

如果我运行这个,我得到错误代码C2678:二进制'=='等。我通过包含这些代码行解决了这个问题:

    private void BindDataGrid()
    {
        DataTable table = new DataTable();
        table = new DataTable();
        table.Columns.Add(ResourceHelper.LoadResource(ResourceName.ProjectnumberTableString));
        table.Columns.Add(ResourceHelper.LoadResource(ResourceName.TemplateString));
        table.Columns.Add(ResourceHelper.LoadResource(ResourceName.FileFormatString));

        gvProjects.Columns.Clear();
        gvProjects.DataSource = null;

        //Fill DataTable here...

        BoundField projectnumberField = new BoundField();
        projectnumberField.HeaderText = ResourceHelper.LoadResource(ResourceName.ProjectnumberTableString);
        projectnumberField.DataField = ResourceHelper.LoadResource(ResourceName.ProjectnumberTableString);

        FileFormatCheckboxControl checkBoxControl = new FileFormatCheckboxControl();
        checkBoxControl.DataField = ResourceHelper.LoadResource(ResourceName.FileFormatString);
        checkBoxControl.HeaderText = ResourceHelper.LoadResource(ResourceName.FileFormatString);

        TemplateDropDownControl dropDownControl = new TemplateDropDownControl();
        dropDownControl.DataField = ResourceHelper.LoadResource(ResourceName.TemplateString);
        dropDownControl.HeaderText = ResourceHelper.LoadResource(ResourceName.TemplateString);

        gvProjects.Columns.Add(projectnumberField);
        gvProjects.Columns.Add(dropDownControl);
        gvProjects.Columns.Add(checkBoxControl);  

        gvProjects.DataSource = table;
        gvProjects.DataBind();
    } 

我加入标题后。新错误说明,

#include <iostream> #include <vector> #include <string> template<class T, class A> void template_Function(T first_Arg, A second_Arg) { if (first_Arg == NULL){ std::cout << "First argument of the template function is null." << std::endl; std::cin.get(); return; } int main() { //Declare and assign values to vector. std::vector<std::string> my_Vector; my_Vector.push_back("Hello, Friend"); //Declare and assign values (using for loop) to array. int my_Array[10]; for (int i = 0; i < 10; i++) { my_Array[i] = i; } //Attempting to pass BOTH the vector and array to the template function. template_Function(my_Vector, my_Array); std::cin.get(); return 0; }

我认为这意味着,从所有谷歌搜索中我无法将“first_Arg”与NULL进行比较。这正是我想要做的,看看first_Arg是否为null然后从那里开始。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您正在将值类型(向量)传递给函数,但是然后尝试&amp;将它与指针(NULL)进行比较。那不行。

因此,要么声明你的函数采用参数T*,强制你使用my_Vector传递&my_Vector,要么切换到引用语义(const如果你愿意的话),并且根本不与NULL进行比较。