在C ++中将对象作为参数传递

我目前遇到一些有关通过函数传递对象返回值的问题。我的函数在.h中原型化,并在.cpp中定义。例如Class::function(int value);的函数采用整数值。当我调用对象objectname name;并将其作为Class::function(name);传递时。

// foo.h
class foo
{
     void function(int value);
}


//foo.cpp
void foo::function(int value)
{
     // CODE HERE
}


//main.cpp
int main()
{
     objectname name;
     foo::function(name);
}

我收到的错误大致如下:

  

Main.cpp:43:23:错误:没有匹配的函数可以调用“ class :: function(objectname&)”       name.function(name); //将值传递给函数

csx80088 回答:在C ++中将对象作为参数传递

呼叫foo::function(name);是三重错误。

  1. 这是对静态函数的调用,但是function不是静态的,因此您需要foo的实例才能调用该函数:
foo myFoo;
myFoo.function(0);
  1. function是私有的,因此不能在foo之外使用。默认情况下,所有类成员都是私有的,因此您需要将其声明为公共:
class foo {
  public:
    void function(int);
}
  1. function接受一个int作为参数,但是您传递了一个objectName类型的对象。那更多是一个设计问题,function应该采用什么参数? int还是objectName? 也许你想要
//header
class foo {
  public:
    void function(objectName &);
}

// cpp
void foo::function(objectName &value) {
}
,

foo的声明和定义是正确的。但是,这不是在C ++中创建和使用对象的方式。

int main() {
  foo foo_obj; // Create an object of type 'foo' named 'foo_obj'
  foo_obj.function(1); // call function named 'function' on the object 'foo_obj' 
                       // and pass integer (=1) as an argument

  return 0;
}

您绝对应该拿起不错的C++ book

,

我看到一个名为name的已分配变量,它的类型为objectName

我看不到任何其他对象的分配,尤其是foo类型的对象。

如果没有类型为foo::function()的对象,则不能调用foo之类的类方法。 (静态声明除外,您不使用它,也不需要它)

主要,您看到的错误是因为您只有一个带有int参数的类方法,而没有一个带有objectName类型参数的函数。

本文链接:https://www.f2er.com/3167868.html

大家都在问