从c++中的另一个类调用一个类

Calling a Class from another class C++

本文关键字:一个 调用 另一个 c++      更新时间:2023-10-16

我有一个类path,它声明了一个名为

的函数
void addConnection(const book& book, const string& name)

,其中book是一个结构体。

在我的main函数中,我正在调用不位于任何类中的void generatePath(const string& inputName);。当我试图调用path类上的函数时,我得到了这个编译错误:

books.cpp:67: error: no matching function for call to ‘path::path()’

我的问题是,如何在类上调用函数?我一直以为是:

path p;
p.addConnection(b, "frank");

没有类路径的默认构造函数。您要么定义它,要么将适当的参数传递给构造函数path p("i don't know what kind of arguments it expects");

注意:不能调用。在类的实例上调用方法

不是"调用"一个类,而是构造一个对象或某个类的实例。

您没有显示path的代码,因此我们只能提供猜测。您已经为path定义了一个非默认构造函数,如

class path {
public:
    path (std::string const &str) : ... {...}
    // note: no "path()"
};
在这种情况下,编译器不会为您合成该默认构造函数。另一种可能性是:
class path {
    int &r;    
};

。不是所有成员变量都可以默认构造或初始化的类(在这种情况下,必须初始化引用),在这种情况下,编译器不能合成默认构造函数

如果您没有定义任何构造函数,则在从类实例化时总是调用和实现默认构造函数。但是如果你定义了一个构造函数,默认的构造函数是"away",那么如果你需要的话,你必须自己编写它。

但是你应该添加更多的代码让我们知道路径是什么;-)