一类:
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)
这段代码将为我完成这项工作.但每次我使用这种方法时,我都要计算参数并将其传入. …
说,我有两个班: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++的新手,我想连接时会出现这个问题.我真的希望有人给我一个解释或解决方案.谢谢 !
这是我的代码:
#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.所以我想知道 我是否可以像这样实例化一个类?如果是,那怎么样?