鉴于以下类在两个单独的头文件中,并且可以按任何顺序出现:
//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)并且只是关于原型冲突的问题!我想它会证明校对的重要性!鉴于原始(我的错误)背景,我接受了答案.
我只是转了几分钟,并没有意识到错!
您将类的引用作为参数传递。这样,一个类及其成员函数就可以在不知道彼此的情况下进行声明。
//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 才能定义这些成员函数。
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |