0
这就是我所得到的。我试图在Bar中使用自定义构造函数创建Foo实例。当我尝试从Bar的构造函数中调用构造函数时,我得到和未解析的外部。无法解析的外部符号“public:class Foo __thiscall Bar :: bu(char const *)”
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 2012-02-03 06:11:07
这是一个链接器问题。我认为你发布的来源不足以解决你的问题。是否所有内容都在同一个翻译单元(文件)中声明?然后我认为它应该工作。如果没有,你应该编辑源文件,指出哪些文件存储在哪个文件中,并给出完整的编译器和链接器命令行以及相应的输出(在这种情况下不应该那么多)。 – Axel 2012-02-03 06:12:12
@peterept:我认为它是有效的,只是Bar :: bu被声明为返回Foo而不是成员变量的方法。在Bar :: Bar()中,bu方法被调用,返回一个未使用的对象。没有多大意义,但应该工作。 – Axel 2012-02-03 06:15:56