分享
三行代码  ›  专栏  ›  技术社区  ›  Yatin

X没有在c++中命名类型[duplicate]

  •  0
  • Yatin  · 技术社区  · 1 周前

    protected_stuff 中定义的变量 protected 中的访问说明符 MainClass .

    这是我的代码:

    • 继承.cpp
    #include<iostream>
    #include"MainClass.h"
    #include"DerivedClass.h"
    
    
    int main(){
    
        DerivedClass a;
        a.func();
        return 0;
    }
    
    • DerivedClass.h
    #ifndef DERIVEDCLASS
    
    #define DERIVEDCLASS
    
    class DerivedClass: public MainClass{
    private:
        int val;
    protected:
        int val2;
    public:
        int val3;
    
        void func(void){
            std::cout<<protected_stuff;
        }
    
    };
    
    #endif
    
    • 主舱.h
    #ifndef MAINCLASS
    #define MAINCLASS
    
    
    class MainClass{
    
    private:
        int value;
        char charecter;
    
        value= 10;
        charecter='a';
    
    protected:
        int protected_stuff;
        protected_stuff = 2;
    
    
    public:
        int public_stuff;
        public_stuff = 3;
    
    };
    
    #endif
    

    g++ -I . inheritance.cpp

    In file included from inheritance.cpp:2:
    MainClass.h:11:2: error: 'value' does not name a type
       11 |  value= 10;
          |  ^~~~~
    MainClass.h:12:2: error: 'charecter' does not name a type
       12 |  charecter='a';
          |  ^~~~~~~~~
    MainClass.h:16:2: error: 'protected_stuff' does not name a type
       16 |  protected_stuff = 2;
          |  ^~~~~~~~~~~~~~~
    MainClass.h:21:2: error: 'public_stuff' does not name a type
       21 |  public_stuff = 3;
          |  ^~~~~~~~~~~~
    

    后来我改了 MainClass.h

    #ifndef MAINCLASS
    #define MAINCLASS
    
    
    class MainClass{
    
    private:
        int value= 10;
        char charecter='a';
    
        // value= 10;
        // charecter='a';
    
    protected:
        int protected_stuff= 2;
        // protected_stuff = 2;
    
    
    public:
        int public_stuff = 3;
        // public_stuff = 3;
    
    };
    
    #endif
    

    我的问题是 我做错什么了 ? 我试着看了其他各种各样的问题,但找不到类似的问题:

    1 回复  |  直到 1 周前
        1
  •  2
  •   john    1 周前

    你的错误与继承无关。如果没有继承,相同的代码将是一个错误。

    在C++语句中 value = 10;

    class MainClass{
        int value= 10;
        MainClass()
        {
            value = 10;
        }
    };
    

    这也是(函数内的语句)

    class MainClass{
        int value= 10;
        void function()
        {
            value = 10;
        }
    };
    

    int value = 10; 是一个声明,以便它可以跳出函数之外。