【发布时间】:2012-02-03 06:05:25
【问题描述】:
这就是我所拥有的。我正在尝试使用自定义构造函数在 Bar 中创建 Foo 的实例。当我尝试从 Bar 的构造函数中调用构造函数时,我得到了外部未解析的结果。
class Foo
{
public:
// The custom constructor I want to use.
Foo(const char*);
};
class Bar
{
public:
Bar();
//The instance of Foo I want to use being declared.
Foo bu(const char*);
};
int main(int argc, char* args[])
{
return 0;
}
Bar::Bar()
{
//Trying to call Foo bu's constructor.
bu("dasf");
}
Foo::Foo(const char* iLoc)
{
}
【问题讨论】:
-
该代码无效。当您添加成员变量时,当您想使用自定义构造函数时,您将其作为指针: Foo *bu;然后在构造函数中创建实例。
-
这是一个链接器问题。我认为您发布的来源不足以解决您的问题。是否在同一个翻译单元(文件)中声明了所有内容?然后我认为它应该工作。如果没有,您应该编辑源代码以指示存储在哪个文件中,并提供完整的编译器和链接器命令行以及相应的输出(在这种情况下不应该那么多)。
-
@peterept:我认为它是有效的,只是 Bar::bu 被声明为返回 Foo 而不是成员变量的方法。在 Bar::Bar() 中调用 bu 方法,返回一个未使用的对象。没有多大意义,但应该可以。
-
@Axel 都在一个文件中。粘贴的示例是我用来获取错误的示例,仅此而已。我不明白为什么它不起作用
-
对不起,我读得很快。您只是缺少 Foo bu(const char*) 函数的实现。它没有在上面的示例中列出。您声明了它,但没有提供它的实现。如果您的意思是 bu 是一个对象,那么我上面所说的是正确的。只需让 Foo *bu 成为成员并分配它。
标签: c++ class unresolved-external