精华内容
下载资源
问答
  • 表达式必须包含类类型

    万次阅读 2019-02-20 13:36:50
    其中最后一句老是出现 Class表达式必须包含类类型 的错误,后来搜了一下发现改成Class->Data1=0x745a17a0; 就可以了 两者的区别: 1、A.B则A为对象或者结构体; 2、A->B则A为指针,->是成员...
    GUID *LPGUID;    //GUID 是一个结构体
    LPGUID Class;
    Class.Data1=0x745a17a0;
    

    其中最后一句老是出现 Class表达式必须包含类类型 的错误,后来搜了一下发现改成Class->Data1=0x745a17a0; 就可以了
    两者的区别:
    1、A.B则A为对象或者结构体;
    2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;
    例如:

    class student
    	
    	{    	
        	public:     	
        	string name[20];    	
    	}
    

    第一种情况,采用指针访问 student *xy,则访问时需要写成 *xy.name=“hhhhh”;等价于xy->name=“hhhhh”。
    第二种情况,采用普通成员访问 student xy,则访问时需要写成 xy.name=“hhhhh”。

    展开全文
  • 【Debug】— C++ 表达式必须包含类类型
                           

    错误一般发生在使用.进行访问时,原因可能在于:

    • 你以为你定义了一个类对象,其实你是声明了一个函数,在编译器看来;
    • 对类对象指针采用.的方式访问其成员变量;

      • 也包括基本类型变量,错误地使用.
      int a = 10;a.foo();           // 显然会提示“错误:表达式必须包含类类型”
          
      • 1
      • 2

    1. 情况 1

    class Test{public:    Test(){ }    void foo(){ }};int main(int, char**){    Test t();                // 编译器会将 t 视为一个函数;    t.foo();                 // 出错,表达式必须包含类类型    return  0;}
      
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    修改方法:

    // 对象的定义,修改为:Test t;
      
    • 1
    • 2

    当构造函数中存在一些参数时:

    class Test{public:    Test(int i) {}                    // 但要避免默认单参构造函数:Test(int i = 0) {}    ...}int main(){    Test t(5);    ...}
      
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2. 情况 2

    Test* t = new Test(5);// 错误访问成员函数的形式:t.foo();               // 正确写法:t->foo();           
      
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 《C++:表达式必须包含类类型

    千次阅读 2019-04-04 14:31:21
    出现“表达式必须包含类类型”这种报错,可能就是声明对象为基本类型的变量和声明的对象为指针时调用成员变量的方式使用错误导致的。声明对象为基本类型的变量时,应该使用直接成员访问运算符(.)来访问;...

    报错原因 


    出现“表达式必须包含类类型”这种报错,可能就是声明类对象为基本类型的变量声明类的对象为指针时调用成员变量的方式使用错误导致的。声明类对象为基本类型的变量时,应该使用直接成员访问运算符 (.)来访问;声明类的对象为指针时,应该使用箭头号(->)来访问。

     

    错误代码


     

    报错截图


    展开全文
  • c++ 表达式必须包含类类型 VC_error_code:c2228 1.这样的错误一般发生在使用’.’进行访问时,原因可能在于: 2.你以为你定义了一个对象,其实你是声明了一个函数,在编译器看来;

    c++ 表达式必须包含类类型 VC_error_code:c2228

    ———

    这样的错误一般发生在使用’.’进行访问时,原因可能在于:

    1. 你以为你定义了一个类对象,其实你是声明了一个函数,在编译器看来;
    2. 对类对象指针采用.的方式访问其成员变量;

    第一种原因

    我们列出会出该错误的代码

    class ClassName {
    public:
        ClassName(){}
        ClassName(int In_val) {_val=In_val}; 
        void foo() {}
    private:
        int _val;
    };
    int main(int argc, char *argv[]) {
        ClassName x(1);
        x.foo();
        ClassName y();
        y.foo();  // error
        return 0;
    }

    在上面这个简单例子中” y.foo() “这句话会报错,原因是就是:编译器将” ClassName y(); “当成了一个函数处理了。
    类似于下面例子的效果。

    class ClassName {
    public:
        ClassName() {}
        ClassName(int In_val) { _val = In_val }; //
        void foo() {}
    private:
        int _val;
    };
    int main(int argc, char *argv[]) {
        ClassName x(1);
        x.foo();
        ClassName y();  //被当成声明在函数中的函数了
    
        ClassName z = y();
        z.foo();    // pass
        //y.foo();  // error
        return 0;
    }
    
    ClassName y() {
        return ClassName(233);
    }

    所以,我们如果要使用无参数的默认构造函数的时候应该如下的写法:

        ClassName ClassVal;
        ClassName ClassVal = ClassName(); // 可能还有其他的写法

    第二种原因

    class ClassName {
    public:
        ClassName(){}
        ClassName(int In_val) {_val=In_val}; //
        void foo() {}
    private:
        int _val;
    };
    
    int main(int argc, char *argv[]) {
        ClassName *x=new ClassName(233);
        x.foo(); //error
        delete x;
        return 0;
    }

    错误的原因是,我们应该使用类指针的成员时使用“ -> ”,但是我们用成了 ” . “,导致了编译器报错。

    正规写法常见有下面两种

    class ClassName {
    public:
        ClassName(){}
        ClassName(int In_val) {_val=In_val}; 
        void foo() {}
    private:
        int _val;
    };
    
    int main(int argc, char *argv[]) {
        ClassName *x=new ClassName(233);
        x->foo();    // 方法一
        (*x).foo();  // 方法二
        delete x;
        return 0;
    }
    展开全文
  • (定义对象 || 调用函数) 时提示:“表达式必须包含类类型” 的报错; 对象调用函数时提示:“不可访问” 的报错。 一、表达式必须包含类类型 这种报错会出现在两种情况: 没有数据成员时,使用定义对象时带...
  • ERROR:表达式必须包含类类型

    千次阅读 2019-09-20 11:18:05
    错误现象: 解决方法: 把.替换成-> 原因: 两个运算符号的优先级相同,->用于指向结构成员,它的左边应为指向该结构类型的指针(结构指针),.的左边应为该结构类型的变量(结构变量)。 ...
  • 【Debug】 C 表达式必须包含类类型

    千次阅读 2018-11-05 02:45:20
    // 显然会提示“错误:表达式必须包含类类型” 1 2 1. 情况 1 class Test{ public :  Test (){ }  void foo(){ }}; int main( int , char **){ Test t();  // 编译器会将 t 视为一个函数;  t.foo();  // ...
  • 我在用teechart控件的时候,写了这么一句m_chart.Series(0).Add(900,"lable",1);,然后就提示那个错误,愁死了,求高手解决
  • 表达式必须包含类型 没有写构造函数 PhaseCorrection cPhase(); cPhase.correct(); 报错,改成 PhaseCorrection cPhase; cPhase.correct(); 正确 转载于:...
  • 我试图从“盒子”开始具有PREVIOUS 4字节的地址,以与来自rt_tsk_self()的返回的U32值进行比较,但它只是给出了“表达式必须是指向完整对象类型的指针”的错误./*--------------------------- rt_free_box -----------...
  • ``` #include #include #define MaxSize 50 typedef int ElemType; typedef struct Node *Position; typedef Position BTNode;...其中p St b报错“表达式必须包含指向的指针类型” 请问大佬们这是为什么呀?
  • 这里写目录标题问题描述分析过程总结 问题描述 VS2015生成了一个QMainWindow界面,我在cpp实现文件使用ui这个...想想这个问题也是基础问题,而且提示已经写得很清楚了表达式必须包含指针类型,也就是现在ui不是指针类型
  • 在 boost::variant的原理及基本用法 ,我们知道想要获取variant 类型变量的内容,主要有apply_visitor和get两种方法,而get的一个显著的缺陷即是,当variant类型变量以参数的形式传递给某一函数时,我们需要判断其...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 682,595
精华内容 273,038
关键字:

表达式必须包含类类型