c ++的新手很难理解继承类何时会破坏编译器,因此我试图构造一个播放器类并将其传递给核心类,然后使用核心类来创建对象
错误:
./core.h:6:12: error: expected unqualified-id
class Core public: Player {
^
app.cpp:6:8: error: variable has incomplete type 'Core'
Core core;
^
./core.h:6:7: note: forward declaration of 'Core'
class Core public: Player {
app.cpp
#include "core.h"
int main()
{
Core core;
core.Player(..);
core.Player(..);
std::cout << core.GetStringValue(..);
}
Player.cpp
#include "core.h"
#include "PlayerKeys.h"
class Player {
private:
.... initialized variables
public:
... functions
One function calls a function from Core.Datetime
}
core.h
#ifndef Core_H
#define Core_H
class Core public: Player {
public:
...
};
#endif
core.cpp
class Core{
public:
std::string DevlopmentTeamAccessDailyHash(){
...
}
std::sting SystemAccessActiveHash(){
...
}
std::string CurrentDateAndTime(){
...
}
}
答案 0 :(得分:0)
class Core : public Player {
只要将冒号公开。一个简单的语法错误。同样不要忘记在player.h
中包含core.h
(如果Player类声明仅位于.cpp文件中,则可能必须将Player类声明移至头文件中。)
答案 1 :(得分:0)
您的core.cpp和player.cpp文件包含类声明。它们不用于类声明。它们应该包含类定义。
例如您的core.cpp应该看起来像这样。
#ifndef Core_H
#define Core_H
class Core : public Player //note that you place the : in wrong place
{
public:
Core();
std::string DevlopmentTeamAccessDailyHash();
...
};
#endif
您的标题看起来像这样
Player
编辑:您在注释中提到您想通过Core
将一些参数传递给core.Player(..);
的构造函数
我想这就是您要对此通话进行的操作。
core.Player::Player(your arguments)
此调用不是调用播放器构造函数的有效方法。
您也许可以做Core
,但这又不是OOP的工作原理。
相反,您可以修改 Core::Core(parameters ...);
构造函数,使其采用所需的所有参数
在头文件(Core.h)中
Core::Core(parameters ...)
{
Player::Player(parameters passed as arguments...);
//do core stuff..
}
在cpp文件(Core.cpp)中
AsyncTask