C++类原型冲突

SSi*_*ht3 5 c++ class

鉴于以下类在两个单独的头文件中,并且可以按任何顺序出现:

//TestB.h
class TestB; //Forward declaration for a later operator= in a centralised header

class TestA
{
    const TestA&operator=(const TestB); //defined in Test.h
};
Run Code Online (Sandbox Code Playgroud)

和:

//TestA.h
class TestA; //Forward declaration for a later operator= in a centralised heaer

class TestB
{
    const TestB&operator=(const TestA); //defined in Test.h
};
Run Code Online (Sandbox Code Playgroud)

我如何避免原型冲突?

感谢帮助.

我绝对向大家道歉!我原本打算在那里引用(运算符中的&符号=参数 - 我永远不会通过复制条形简单的POD)并且只是关于原型冲突的问题!我想它会证明校对的重要性!鉴于原始(我的错误)背景,我接受了答案.

我只是转了几分钟,并没有意识到错!

Did*_*set 4

您将类的引用作为参数传递。这样,一个类及其成员函数就可以在不知道彼此的情况下进行声明。

//TestB.h
class TestB; //Forward declaration for a later operator= in a centralised header

class TestA
{
    const TestA&operator=(const TestB &); //defined in TestB.h
};
Run Code Online (Sandbox Code Playgroud)

和:

//TestA.h
class TestA; //Forward declaration for a later operator= in a centralised heaer

class TestB
{
    const TestB&operator=(const TestA *); //defined in TestA.h
};
Run Code Online (Sandbox Code Playgroud)

之后,您必须在 TestA.cpp 和 TestB.cpp 文件中包含 TestA.h 和 TestB.h 才能定义这些成员函数。