gpt4 book ai didi

C++:类成员中的默认值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:43 26 4
gpt4 key购买 nike

我在为我的 C++ 类成员指定默认值时遇到问题。我的代码是:

来自 Someclass.h:

class SomeClass
{
public:
SomeClass();
~SomeClass();
void printOut (bool);
}

...来自 SomeClass.cpp:

void SomeClass::printOut(bool foobar=true)
{
if (foobar) { std::cout << foobar << std::endl; }
}

...最后,来自 main.cpp:

int main()
{
SomeClass s;
s.printOut();
return 0;
}

然而,这会给出错误消息 (gcc):

../main.cpp: In function `int main()':
../main.cpp:8: error: no matching function for call to `SomeClass::printOut()'
../SomeClass.h:18: note: candidates are: void SomeClass::printOut(bool)
subdir.mk:21: recipe for target `main.o' failed
make: *** [main.o] Error 1

我试过直接在头文件的类声明中指定默认值等。我也试过搜索 Stack Overflow 和 Google,但在任何地方都找不到任何解决方案。我做错了什么?

最佳答案

您还没有在 header 中为参数指定默认值,编译器正在为您的声明 s.printOut 寻找签名为 void printOut(void) 的函数(); 但正确地没有找到它。你需要的是:

class SomeClass
{
public:
SomeClass();
~SomeClass();
void printOut( bool fValue = true ); // Note change in param in definition
}

在你的 cpp 中:

void SomeClass::printOut(bool foobar /*=true*/ )
{
if (foobar) { std::cout << foobar << std::endl; }
}

作为旁注,请记住,您不必将注释掉的参数默认值放在实现文件中,但这是提高可读性的好主意。

关于C++:类成员中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9802759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com