假设您有两个具有相同内容的实现源文件:
// foo{a,b}.cpp
class Foo {
public:
void bar();
}
void Foo::bar() { std::cout << "bar\n"; }
实现普通函数(不是成员方法),我只想将此方法标记为static
。但是这在方法声明上有不同的含义,不能在实现中指定。
如何更改foob.cpp
以便在编译和链接文件时不会出现链接器错误?
答案 0 :(得分:4)
您可以将整体放在未命名的命名空间
中// foo{a,b}.cpp
namespace
{
class Foo {
public:
void bar();
}
void Foo::bar() { std::cout << "bar\n"; }
}
该课程在外面不可见,只能在当前的翻译单元中使用。
答案 1 :(得分:0)
正常的解决方案是从Foo::bar()
删除foob.cpp
的定义。