从另一个C ++类调用一个类

时间:2011-08-10 09:51:02

标签: c++

我有一个类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");

3 个答案:

答案 0 :(得分:3)

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

注意:您不会调用。您可以在类的实例上调用方法。

答案 1 :(得分:1)

你没有“调用”一个类,你构造一个类的对象或实例。

您尚未显示path的代码,因此我们只能提供猜测。我的意思是:你为path定义了一个非默认的构造函数,比如

class path {
public:
    path (std::string const &str) : ... {...}
    // note: no "path()"
};

在这种情况下,编译器不会为您合成该默认构造函数。另一种可能性是例如。

class path {
    int &r;    
};

即。一个类,其中并非所有成员变量都可以默认构造或初始化(在这种情况下:必须初始化引用),在这种情况下,编译器无法合成默认构造函数。

答案 2 :(得分:0)

如果未定义任何构造函数,则在从类实例化时始终会调用并实现默认构造函数。但是如果你定义了一个构造函数,默认的构造函数就是“离开”,那么你可以自己编写它,如果你需要的话。

然而,您应该添加特定的更多代码,以便让我们知道路径是什么; - )