相关疑难解决方法(0)

不同C++文件中的相同类名

如果两个C++文件具有相同名称的类的不同定义,那么当它们被编译和链接时,即使没有警告也会抛出某些内容.例如,

// a.cc
class Student {
public:
    std::string foo() { return "A"; }
};
void foo_a()
{
    Student stu;
    std::cout << stu.foo() << std::endl;
}

// b.cc
class Student {
public:
    std::string foo() { return "B"; }
};
void foo_b()
{
    Student stu;
    std::cout << stu.foo() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

当使用g ++编译和链接在一起时,两者都将输出"A"(如果a.cc在命令行顺序中位于b.cc之前).

这里有类似的话题.我看到命名空间将解决这个问题,但我不知道为什么链接器甚至不会发出警告.如果该类的一个定义具有未在另一个中定义的额外函数,则说b.cc更新为:

// b.cc
class Student {
public:
    std::string foo() { return "B"; }
    std::string bar() { return "K"; }
};
void foo_b()
{
    Student stu;
    std::cout << stu.foo() …
Run Code Online (Sandbox Code Playgroud)

c++ class name-clash

22
推荐指数
1
解决办法
8642
查看次数

标签 统计

c++ ×1

class ×1

name-clash ×1