类和构造函数C ++ - errors&警告C2146,C4430

时间:2014-06-22 12:53:58

标签: c++

我正在尝试从其他课程中访问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 ...

这些错误和警告是什么意思以及如何修复错误?

2 个答案:

答案 0 :(得分:1)

每个类定义必须以分号结尾。例如:

class Foo {};

答案 1 :(得分:0)

在每个类定义后加上分号:

class MyParser {
    //... body
};
 ^

然后在构造函数初始化列表中初始化类的成员:

class MyMainClass{
    private:    
    MyParser JustPars;
    FILE_ File;
    public:
         MyMainClass( MyMainClass* globInst) : JustPars( globInst ),
                                               File( globInst)
                                               {}
}