我正在尝试从其他课程中访问class MyMainClass
。我想创建类FILE_
和MyParser
的新实例,并将指针传递给MyMainClass
实例。但是我遇到了一些错误。
Definitions.h:
#ifndef DESTINATION_CONST
#define DESTINATION_CONST
class MyMainClass;
#endif
MyParser.cpp:
#include "stdafx.h"
class MyParser{
private:
PMainInstance * globalInstance;
public:
MyParser( MyMainClass * globInst ){
PMainInstance = globInst;
}
void static ParseArgs(int argc, char* argv[]){}
};
File.cpp:
#include "stdafx.h"
FILE_::FILE_( MyMainClass * globInst){
PMainInstance = globInst;
};
主类global.h:
class MyMainClass{
private:
MyParser JustPars( MyMainClass );
FILE_ File( MyMainClass );
};
现在,当使用默认构造函数时,我在最后一行出错:
error C2146: syntax error : missing ';' before identifier 'JustPars'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
warnning C4183: 'JustPars': missing return type; assumed to be a member function returning 'int'
这两行是错误的:
MyParser JustPars ...
FILE_ File ...
这些错误和警告是什么意思以及如何修复错误?
答案 0 :(得分:1)
每个类定义必须以分号结尾。例如:
class Foo {};
答案 1 :(得分:0)
在每个类定义后加上分号:
class MyParser {
//... body
};
^
然后在构造函数初始化列表中初始化类的成员:
class MyMainClass{
private:
MyParser JustPars;
FILE_ File;
public:
MyMainClass( MyMainClass* globInst) : JustPars( globInst ),
File( globInst)
{}
}