创建一个返回类类型的函数

时间:2015-07-28 13:25:13

标签: c++ function class

我正在尝试创建一个具有类Node类型的函数,并将Node作为参数。 目前我有这个,这是行不通的;

Node return_node (Node inNode)
{
    return inNode.print_values();
}

我已经在这之上声明了一些节点,但是无法解决如何利用这个功能,我也不确定你甚至可以创建一个将类型作为类的函数? 我希望能够创建一个函数,它接受我声明的类的类型。

print_values()函数如下所示;

void print_values()
{
    cout << "A: " << A << "\nB: " << B;
}

3 个答案:

答案 0 :(得分:2)

到目前为止,

return_node()是一个返回Node类值的函数。从您尝试做的事情来看,您正在尝试打印Node的值,这些值可能包含整数,字符串等。print_values()是打印字符串还是返回一个字符串,它不符合函数的要求。为了澄清,return_node()需要返回一些Node类。

如果您只是尝试打印出值(print_values通过coutprintf打印值),我建议制作类型为void的return_node。但是,如果您尝试返回节点,请尝试添加return inNode。您将看到在尝试编译时不会出现错误。

编辑:刚看到你做的编辑。 print_values()方法是否属于Node类?

答案 1 :(得分:0)

一个类只是一个类型,因此语句“具有类的函数”并不真正有意义。相反,你应该说“有类型类”。

您应该根据它们作为参数的类型(函数域)和返回的类型(codomain)来考虑函数。例如函数int mul2(int x) { return 2 * x; }具有域int和codomain int(即int - &gt; int)。

您已声明函数return_node拥有域Node和codomain Node(即Node - &gt; Node )。那么return_node定义(即实现)是否满足此声明?好吧,return_node只返回print_values返回的值,Node本身具有隐式域void和codomain return_nodeprint_valuesNode != void的codomain是否相同?不,因为return_node,因此您对 //Include connect file to make a connection to test_cars database include("prototypeconnect.php"); $proId = $_POST["id"]; $proCode = $_POST["code"]; $proDescr = $_POST["descr"]; $proManu = $_POST["manu"]; $proCPU = $_POST["cpu"]; $proWPU = $_POST["wpu"]; $proBarCode = $_POST["barcode"]; $proIngredients = $_POST["ingredients"]; $proAllergens = $_POST["allergenscon"]; $proMayAllergens = $_POST["allergensmay"]; //Insert users data in database $sql = "INSERT INTO prototype.Simplex_List (id, code, descr, manu, cpu, wpu, barcode, ingredients, allergenscon, allergensmay) VALUES ('$proId' , '$proCode', '$proDescr' , '$proManu' , '$proCPU' , '$proWPU' , '$proBarCode' , '$proIngredients' , '$proAllergens' , '$proMayAllergens')"; //Run the insert query mysql_query($sql) 的定义不符合给定的声明。

答案 2 :(得分:0)

很难帮助你,因为你正在以错误的方式使用正确的术语。让我们从标题开始:

“创建一个返回类类型的函数”

没有。您想编写一个返回类类型值的函数。 此外...

“我正在尝试创建一个具有类Node类型的函数,并将Node作为参数。”

没有。我想你的意思是你在标题中已经说过的:返回Node并传递Node作为参数(函数的类型是Node TYPE_OF_YOUR_FUNCTION (Node),仅用于记录)。

澄清之后,我实际上不知道你的问题是什么。如果您有这样的课程:

struct MyClass {
    int x;
}

您可以编写一个函数,例如:

MyClass MyMyClassFunction(MyClass a){
    a.x ++;
    return a;
}

在你的功能中,你不会返回任何东西。您将其声明为返回Node但实际上返回inNode.print_values();的值void(因为这是print_values()的返回类型)。将其更改为例如

Node return_node (Node inNode) {
    inNode.print_values();
    return inNode;
}