我正在尝试创建一个具有类Node
类型的函数,并将Node
作为参数。
目前我有这个,这是行不通的;
Node return_node (Node inNode)
{
return inNode.print_values();
}
我已经在这之上声明了一些节点,但是无法解决如何利用这个功能,我也不确定你甚至可以创建一个将类型作为类的函数? 我希望能够创建一个函数,它接受我声明的类的类型。
print_values()函数如下所示;
void print_values()
{
cout << "A: " << A << "\nB: " << B;
}
答案 0 :(得分:2)
return_node()
是一个返回Node类值的函数。从您尝试做的事情来看,您正在尝试打印Node的值,这些值可能包含整数,字符串等。print_values()
是打印字符串还是返回一个字符串,它不符合函数的要求。为了澄清,return_node()需要返回一些Node类。
如果您只是尝试打印出值(print_values通过cout
或printf
打印值),我建议制作类型为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_node
。 print_values
和Node != 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;
}