小编WAL*_*KER的帖子

C++中的比较技巧

一类:

class foo{
public:
    int data;
};
Run Code Online (Sandbox Code Playgroud)

现在我想在这个类中添加一个方法,进行一些比较,看看它的数据是否等于给定数字之一.

当然,我可以写if(data==num1|| data == num2|| data ==num3.....),但老实说,data ==每当我把它与数字进行比较时,我都会感到恶心.

所以,我希望我能写出这样的东西:

if(data is equal to one of these(num1,num2,num3,num4,num5...))
    return true;
else
    return false;
Run Code Online (Sandbox Code Playgroud)

我想实现这个声明, data is equal to one of these(num1, num2, num3, num4, num5...)

这是我的方法:

#include <stdarg.h>
bool is_equal_to_one_of_these(int count,...){
    int i;
    bool equal = false;
    va_list arg_ptr;
    va_start(arg_prt,count);
    for(int x=0;x<count;x++){
        i = va_arg(arg_ptr,int);
        if( i == data ){
            equal = true;
            break;
        }
    }
    va_end(arg_ptr);
    return equal;
}
Run Code Online (Sandbox Code Playgroud)

这段代码将为我完成这项工作.但每次我使用这种方法时,我都要计算参数并将其传入. …

c++ comparison

35
推荐指数
5
解决办法
3470
查看次数

C++头文件交叉#include

说,我有两个班:A&& B; 一个头文件myheader.h:

....
class A{
public:
    void display(B* c);
};
class B{
public:
    void display(A* c);
};
.....
Run Code Online (Sandbox Code Playgroud)

编译器给了我错误:'B'没有声明(在A :: display中)正如预期的那样.

所以我为A和写了两个分开的标题B:( aheader.h包括A类的定义)和bheader.h(包括B类);

aheader.h:

#include "bheader.h"
Run Code Online (Sandbox Code Playgroud)

bheader.h:

#include "aheader.h"
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好 .

但是当我开始编写时出现问题implementation.cpp:

#include "aheader.h"
#include "bheader.h"
void A::display(B* c){}
void B::display(A* c){}
Run Code Online (Sandbox Code Playgroud)

现在,A'尚未宣布.(在B ::显示中)

不知道如何简要描述这个问题.

我正在使用Ubuntu14,Eclipse CDT,Linux GCC和Gnu Makd Builder.

我是C++的新手,我想连接时会出现这个问题.我真的希望有人给我一个解释或解决方案.谢谢 !

c++ header

2
推荐指数
2
解决办法
4084
查看次数

通过指针进行C++实例化

这是我的代码:

#include <iostream>
using namespace std;
class form{
public:
    form(int c ){
        code = c;
    }
    int code;
};
void createForm(form* f,int c){
    f = new Form(c);
}
int main(){
    form* f1;
    form* f2;
    createForm(f1,1111);
    createForm(f2,2222);
    cout<<f1->code<<endl;
    cout<<f2->code<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果,我没有看到任何打印出来的东西.我知道实际上并没有创建f1和f2.所以我想知道 我是否可以像这样实例化一个类?如果是,那怎么样?

c++ pointers class instantiation

0
推荐指数
2
解决办法
96
查看次数

标签 统计

c++ ×3

class ×1

comparison ×1

header ×1

instantiation ×1

pointers ×1