gpt4 book ai didi

c++ - 在第二种情况下为我的命名空间和函数指定声明是如何正确的?

转载 作者:行者123 更新时间:2023-11-30 01:21:54 24 4
gpt4 key购买 nike

看,我将我的命名空间和函数放在 main 之前并且编译成功:

#include <iostream>
#include <exception>
#include <string>
using namespace std;
//==================================================
namespace Bushman{
void to_lower(char* s)
// Replace all chars to lower case.
{
const int delta = 'a' - 'A';
while(*s){
if(*s >= 'a' && *s <= 'z') *s -= delta;
++s;
}
}
}
//==================================================
int main()
// entry point
try{
namespace B = Bushman; // namespace alias
void B::to_lower(char* s);
char* str = "HELLO, WORLD!";
B::to_lower(str);
printf("%s\n",str);
}
catch(exception& e){
cerr << e.what() << endl;
return 1;
}
catch(...){
cerr << "Unknown exception." << endl;
return 2;
}

但是如果我把命名空间和函数放在 main 之后,那么我就无法编译:

#include <iostream>
#include <exception>
#include <string>
using namespace std;
//==================================================
int main()
// entry point
try{
namespace B = Bushman; // namespace alias
void B::to_lower(char* s);
char* str = "HELLO, WORLD!";
B::to_lower(str);
printf("%s\n",str);
}
catch(exception& e){
cerr << e.what() << endl;
return 1;
}
catch(...){
cerr << "Unknown exception." << endl;
return 2;
}
//==================================================
namespace Bushman{
void to_lower(char* s)
// Replace all chars to lower case.
{
const int delta = 'a' - 'A';
while(*s){
if(*s >= 'a' && *s <= 'z') *s -= delta;
++s;
}
}
}

在第二种情况下如何为我的命名空间和函数指定声明是正确的?

最佳答案

您可以在函数的命名空间内,在 main 之前转发声明该函数:

namespace Bushman
{
void to_lower(char* s);
}

int main()
{
// as before
}

关于c++ - 在第二种情况下为我的命名空间和函数指定声明是如何正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17426494/

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