C++ 参数为自定义类的引用问题

更新:已解决
我在while的外面定义了marks和ArbitrageFreeInterpolater变量,再在循环中赋值获取参数,再赋值给这两个变量,结果就对了~~

第一次在CSDN上提问,C++新手,下面是我写的一个作业的一部分,卡在一个问题很久了,一直出不来结果,希望大神可以帮忙看看,多谢了!!

int main(int argc, char* argv[])
{
ifstream fin;
fin.open("/Users/gxy/Desktop/eurusd.txt",0);
if(!fin) {
cerr << "input file does not exist" << endl;
return 1;
}
double spot, rd, rf;
fin >> spot >> rd >> rf;
double mu = rd - rf;
std::cout << "-------------------Input------------------\n"
<< "spot = " << spot << std::endl
<< "rd = " << rd << std::endl
<< "rf = " << rf << std::endl
<< "t \t ATM \t MS25 \t RR25 \t MS10 \t RR10" << std::endl;
vector< pair > pillarSmiles;
vector kmin, kmax;
int a = 0;
while(!fin.eof()) {
double t;
double atmvol;
double ms25;
double rr25;
double ms10;
double rr10;
if (fin >> t >> atmvol >> ms25 >> rr25 >> ms10 >> rr10) {
cout << t << "\t" << atmvol << "\t" << ms25 << "\t" << rr25 << "\t" << ms10 << "\t" << rr10 << std::endl;
vector< pair > marks = input2Marks(spot, rd, rf, t, atmvol, ms25, rr25, ms10, rr10);
ArbitrageFreeInterpolator af(t, marks, spot, mu);
pillarSmiles.push_back( pair(t, af) );
std::cout<< "pillarSmiles[" << a <<"].second.Vol(1.3)= "<<pillarSmiles[a].second.Vol(1.3)<<std::endl; //test1
kmin.push_back(marks.front().first); // for plotting the charts only
kmax.push_back(marks.back().first);
}
std::cout<< "out of if pillarSmiles[" << a <<"].second.Vol(1.3)= "<<pillarSmiles[a].second.Vol(1.3)<<std::endl; //test2
a++;
}
ImpliedVol iv(pillarSmiles);
LocalVol lv(iv, spot, rd, rf);

    ImpliedVol,LocalVol,Smile都是自定义的类,AbitrageFreeInterpolator是Smile的子类,声明如下:
    class Smile

{
public:
virtual double Vol(double strike) const = 0;
};
class ImpliedVol
{
public:
ImpliedVol( const vector< pair > );
// linear interpolation in variance, along the strike line
double Vol(double t, double k) const;
double dVoldK(double t, double k) const {return (Vol(t, k+0.01) - Vol(t, k-0.01)) / 0.02; }
double dVoldT(double t, double k) const {return (Vol(t+0.005, k) - Vol(t, k)) / 0.005; }
double dVol2dK2(double t, double k) const {return (Vol(t, k+0.01) + Vol(t, k-0.01) - 2*Vol(t, k) ) / 0.01 / 0.01; }
private:
const vector< pair > pillarSmiles;
};
class ArbitrageFreeInterpolator : public Smile
{
public:
ArbitrageFreeInterpolator(double _t, const vector< pair >& _marks, double _S, double _mu);
virtual double Vol(double strike) const;
private:
vector< pair > marks; //M (k, sigma) input pairs;
double S; // Spot price;
double mu; // drift of spot;
double t; //time to maturity(in unit of year);
vector< pair > outputmarks; // N (k, c)pairs;
vector y2; // second derivatives;
};
Input文件内容如下:
1.25805 0.0100 0.0030
0.02 0.1550 0.0016 -0.0065 0.0050 -0.0111
0.04 0.1395 0.0016 -0.0110 0.0050 -0.0187
0.06 0.1304 0.0021 -0.0143 0.0067 -0.0248
......
想问一下main函数中我两处cout的测试结果(test1,test2)为什么不同,if里面cout出的结果是对的,出了if结果就不对了,哪里改变了,是因为参数是引用的问题吗,要怎么改呢?

2个回答

楼主您好,
vector< pair > marks = input2Marks(spot, rd, rf, t, atmvol, ms25, rr25, ms10, rr10); 这句是在if里边申请的局部变量。

ArbitrageFreeInterpolator(double _t, const vector< pair >& _marks, double _S, double _mu);第二个 参数使用的是引用,即
在if区域内部使用的是一个该区域内的局部变量,出了这个区域这个变量的区域被编译器收回。在区域外再次使用pillarSmiles对应的value值中的内容已经被清理。。。

所以需要改变下vector< pair > marks 作用域,使它在if外仍然有效即可。

qq_39971112
sherry_gong 谢谢,已采纳!想追问一下,昨天我在循环外新定义了一个ArbitrageFreeInterpolator af和marks,然后在循环中对其赋值,af=ArbitrageFreeInterpolator(),但是我发现出了循环后,pillarSmile中全部都是最后一次循环的af的值,另外我也尝试过在循环外建一个AbitrageFreeInterpolator的vector,然后每次将循环内新定义的AbitrageFreeInterpolator赋值给这个vector, 结果会报错:Thread 1: EXC_BAD_ACCESS (code=1, address=0x0),想问一下您有什么好的解决方案吗?
大约 2 年之前 回复
March_Best
March_Best 回复qq_39971112: 感谢完了,记得采纳,悬赏C币记得给我。。。
大约 2 年之前 回复
qq_39971112
sherry_gong 回复qq_39971112: 终于解决了,就是我在循环外面重新定义了marks和af,然后在循环中赋值,太谢谢你啦!
大约 2 年之前 回复
qq_39971112
sherry_gong 恩恩多谢了,我试着在循环外面定义了一个marks,再在循环中定义一个给它赋值(因为数据需要在循环中获取),但是貌似结果还是不对,因为pillarSmile中的第二个参数ArbitrageFreeInterpolator也是引用,我又在循环外定义了一个Arbitrage, 循环内赋值的时候提示Type 'ArbitrageFreeInterpolator' does not provide a call operator,所以我需要再给Arbitrage类定义一个拷贝赋值函数吗(不知道这样想对不对,我试着写了一下拷贝赋值函数,不知道为什么一直报错)?
大约 2 年之前 回复
qq_39971112
sherry_gong 恩恩多谢了,我看了下您发的链接,不过我们老师好像没有让我们用到静态库,最终都是要用h文件和cpp文件编译的。我刚刚debug的时候发现问题可能出在marks和af都是在if里面定义的局部变量,出了if,这两个变量被销毁,因此再调用af的成员函数算出的结果就不对了,不过不知道怎么解决,想问下您有什么好的方法吗?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++ 参数为自定义类的引用问题

更新:已解决 我在while的外面定义了marks和ArbitrageFreeInterpolater变量,再在循环中赋值获取参数,再赋值给这两个变量,结果就对了~~ 第一次在CSDN上提问,C++新手,下面是我写的一个作业的一部分,卡在一个问题很久了,一直出不来结果,希望大神可以帮忙看看,多谢了!! int main(int argc, char* argv[]) { ifstream fin; fin.open("/Users/gxy/Desktop/eurusd.txt",0); if(!fin) { cerr << "input file does not exist" << endl; return 1; } double spot, rd, rf; fin >> spot >> rd >> rf; double mu = rd - rf; std::cout << "-------------------Input------------------\n" << "spot = " << spot << std::endl << "rd = " << rd << std::endl << "rf = " << rf << std::endl << "t \t ATM \t MS25 \t RR25 \t MS10 \t RR10" << std::endl; vector< pair<double, Smile&> > pillarSmiles; vector<double> kmin, kmax; int a = 0; while(!fin.eof()) { double t; double atmvol; double ms25; double rr25; double ms10; double rr10; if (fin >> t >> atmvol >> ms25 >> rr25 >> ms10 >> rr10) { cout << t << "\t" << atmvol << "\t" << ms25 << "\t" << rr25 << "\t" << ms10 << "\t" << rr10 << std::endl; vector< pair<double, double> > marks = input2Marks(spot, rd, rf, t, atmvol, ms25, rr25, ms10, rr10); ArbitrageFreeInterpolator af(t, marks, spot, mu); pillarSmiles.push_back( pair<double, Smile&>(t, af) ); **std::cout<< "pillarSmiles[" << a <<"].second.Vol(1.3)= "<<pillarSmiles[a].second.Vol(1.3)<<std::endl; //test1** kmin.push_back(marks.front().first); // for plotting the charts only kmax.push_back(marks.back().first); } **std::cout<< "out of if pillarSmiles[" << a <<"].second.Vol(1.3)= "<<pillarSmiles[a].second.Vol(1.3)<<std::endl; //test2** a++; } ImpliedVol iv(pillarSmiles); LocalVol lv(iv, spot, rd, rf); ImpliedVol,LocalVol,Smile都是自定义的类,AbitrageFreeInterpolator是Smile的子类,声明如下: class Smile { public: virtual double Vol(double strike) const = 0; }; class ImpliedVol { public: ImpliedVol( const vector< pair<double, Smile&> > ); // linear interpolation in variance, along the strike line double Vol(double t, double k) const; double dVoldK(double t, double k) const {return (Vol(t, k+0.01) - Vol(t, k-0.01)) / 0.02; } double dVoldT(double t, double k) const {return (Vol(t+0.005, k) - Vol(t, k)) / 0.005; } double dVol2dK2(double t, double k) const {return (Vol(t, k+0.01) + Vol(t, k-0.01) - 2*Vol(t, k) ) / 0.01 / 0.01; } private: const vector< pair<double, Smile&> > pillarSmiles; }; class ArbitrageFreeInterpolator : public Smile { public: ArbitrageFreeInterpolator(double _t, const vector< pair<double, double> >& _marks, double _S, double _mu); virtual double Vol(double strike) const; private: vector< pair<double, double> > marks; //M (k, sigma) input pairs; double S; // Spot price; double mu; // drift of spot; double t; //time to maturity(in unit of year); vector< pair<double, double> > outputmarks; // N (k, c)pairs; vector<double> y2; // second derivatives; }; Input文件内容如下: 1.25805 0.0100 0.0030 0.02 0.1550 0.0016 -0.0065 0.0050 -0.0111 0.04 0.1395 0.0016 -0.0110 0.0050 -0.0187 0.06 0.1304 0.0021 -0.0143 0.0067 -0.0248 ...... 想问一下main函数中我两处cout的测试结果(test1,test2)为什么不同,if里面cout出的结果是对的,出了if结果就不对了,哪里改变了,是因为参数是引用的问题吗,要怎么改呢?

C语言函数传参:如何实现指针参数引用传递

下面是实现二叉树线索化的简单算法,我想通过纯C代码实现指针参数的引用传递,使得函数中的修改得以保存,请问InTread()内的参数应该写成什么样的形式?注:下面的代码可能需要进一步修正;ThreadTree为结构体指针 别名。 ``` typedef struct TreadNode{ ElemType data; struct TreadNode *lchild,*rchild; int ltag,rtag; /*左右线索标志域*/ }ThreadNode,*ThreadTree; void InTread(ThreadTree p,ThreadTree pre){ /*p:指向当前访问的结点,pre:指向上一个访问过的结点,用于构建前驱和后继*/ if(p!=NULL){ InTread(p->lchild,pre); if(p->lchild==NULL){ /*判断是否存在空指针*/ p->lchild = pre; p->ltag = 1; } else if(pre!=NULL&&pre->rchild==NULL){ pre->rchild = p; /*p所指结点为上一个访问结点的后继*/ pre->rtag = 1; } pre = p; InTread(p->rchild,pre); } } ```

C++中系统类型与自定义类型隐式转换与重载函数参数是否引用有什么关系?

简单描述,当重载 + 号参数为非引用时可以实现隐式转换 但若加上引用符号则不行,求解? 错误提示: error: no match for 'operator+' (operand types are 'Complex' and 'double')| ``` #include <iostream> using namespace std; class Complex { public: Complex(){real=0,imag=0;} Complex(double r, double i){real=r, imag=i;} Complex operator - (Complex &c); Complex operator * (Complex &c); Complex operator / (Complex &c); Complex(double r){real=r,imag=0;} friend Complex operator+(Complex &c1, Complex &c2); //operator double(){return real;} void display(); private: double real; double imag; }; Complex Complex::operator*(Complex &c) { return (Complex(real*c.real, imag*c.imag)); } Complex Complex::operator/(Complex &c) { return (Complex(real/c.real, imag/c.imag)); } Complex Complex::operator-(Complex &c) { return (Complex(real-c.real, imag-c.imag)); } void Complex::display() { cout <<"(" <<real <<"," <<imag <<"i)" <<endl; } Complex operator + (Complex &c1,Complex &c2) { return (Complex(c1.real+c2.real, c1.imag+c2.imag)); } int main(void) { Complex c1(2,4), c2(3,6), c3; double i = 7.0; c1.display(), c2.display(); c3 = c2 + i; c3.display(); c3 = c2 - c1; c3.display(); c3 = c2 * c1; c3.display(); c3 = c2 / c1; c3.display(); return 0; } ```

易语言转换到C++ 自定义数据类型的问题

易语言中代码 自定义数据类型如下 ------------------------------- ``` .版本 2 .数据类型 数据 .成员 坐标, 坐标_数据类型 .数据类型 坐标_数据类型 .成员 x, 小数型 .成员 z, 小数型 .成员 y, 小数型 ``` 这里的自定义数据类型下的"数据"类型下的"坐标"成员引用自定义数据类型"坐标_数据类型" ------------------------------- 子程序如下 ``` .版本 2 .子程序 自己数据 .参数 返回数据, 数据, 参考 返回数据.坐标.x = 1 返回数据.坐标.z = 2 返回数据.坐标.y = 3 ``` 这里的子程序内的参数"返回数据"定义了个自定义数据类型"数据" ========================================= C++代码如下 ``` struct 数据 { 坐标_数据类型 坐标; }; struct 坐标_数据类型 { float x; float z; float y; }; ``` C++编译就提示如下 error C2146: 语法错误: 缺少“;”(在标识符“坐标”的前面) error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 请问高手们,该如何转换呢。本人菜鸟 懂的不多 嘿嘿!

关于c语言的问题,函数定义时候为什么可以不加形参的类型

比如这段代码 void rkt1f(t,y,n,d) int n; double t,y[],d[]; {t=t; n=n; d[0]=y[1]; d[1]=-y[0]; d[2]=-y[2]; return; } 可以运行,这是用Runge-Kutta计算的一个函数,求教学,这块为什么会对啊

为什么java实体类中一般不定义业务方法?这是否和面向对象的思想有所出入?

我们大多的编码习惯是这样的: controller层定义业务流程; service层定义针对实体的独立业务逻辑; model层定义java实体; dao层定义数据持久化操作。 一般,java实体类中会定义属性和属性对应的set、get方法。 但是却很少有把针对实体的自身的逻辑代码定义在这里。 例如: 班级和学生两个类定义如下, Class:id、name、List<Student> Student:id、name、ClassRef 这里班级保存了学生的对象引用集合,学生保存了班级的引用。 同时,我们一般会另外创建ClassService来定义getAllStudents(Class c); getStudentById()等方法。另外创建StudentService来定义getClassRef(Student s) 那么,如果按照面向对象的思想——对象包括属性、方法,getAllStudents()方法应该定义在Class实体类中,并且都不需要加Class c参数,getStudentById也是一样可以定义在这里。Student类中可以定义getClassRef()来立即找到学生所在的班级,同样也不需要参数了。这样就可以将Service层省略,还可以做一定的数据缓存。只有当缓存中没有数据时才通过Dao来获取数据,并且刷新缓存。 --------问题追加 完全可以做: 在实体类中定义方法,另外创建实体方法接口、类,并且由实体类保存实体方法的引用,当被调用具体的方法时,执行实体方法类中的实现。 这个实体方法接口、类并非service接口、类,因为service类一般都不会被实体类保存引用。

Annotation中定义的enum类型的如何调用

Annotation中定义的enum类型的如何调用,我写了一个代码, @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @Inherited public @interface MyAnnotation { int i(); String str(); em e(); String[] value(); } enum em { Hello, world } 然后我在测试代码中调用枚举类型的e,代码是这样的: public class Main { public static void main(String[] args) { Class<TestMyAnnotation> c = TestMyAnnotation.class; Method test = null ; try { test = c.getDeclaredMethod("testAnnoation",String.class); } catch (Exception e) { e.printStackTrace(); } MyAnnotation a = test.getAnnotation(MyAnnotation.class); System.out.println(a.i()); System.out.println(a.str()); System.out.println(a.e()); //此处出错,抛出IllegalAccessError em e = em.Hello; //em是我定义的一个enum System.out.println(e); //这样是可以的,why? } }

结构体排序,自定义比较函数bool cmp()

C++结构体 用sort排序 自己定义比较函数cmp bool cmp() struct lzl { string s; int a,b; }x[100]; bool cmp(lzl n,lzl m) { if(n.a!=m.a) return n.a>m.a; if(n.a==m.a&&n.b!=m.b) return n.b>m.b; if(n.a==m.a&&n.b==m.b) return n.s<m.s; } 如果a不同,用a来排序,如果a相同,b不同,就用b来排序,a,b都相同就用s来排序。 我想问的是,这个语句在cmp里面怎么写啊!两个的我会写,但是3个怎么写啊?

java 通过 jna 调用 c++ 函数时的参数映射问题

我在java中使用jna调用c++写的函数, c++里面定义了这个函数 BOOL Start(BYTE* &pBuf, int& nLen, FuncPtrLogCnvt CallBack); 作用是根据pBuf和nLen开辟一块内存,并填好了要处理的数据块 c++定义的回调函数typedef VOID (_stdcall *FuncPtrLogCnvt)(BYTE* &pBuf, int& nLen); 在java里面使用回调函数,参数类型要进行映射,如果我定义的回调函数是callback(byte[] pBuf, int nLen) 请问这样定义是否合理,能不能根据pBuf的字节数组取出要处理的数据块?

如何使用内嵌汇编引用c函数

main.c ``` #include<stdio.h> #include<stdlib.h> extern int sum(int); int main(int argc, char __stdcall**argv) { int i; if (argc < 2) { printf("usage: main number\n"); return -1; } i = atoi(argv[1]); __asm { // 计算并输出sum(i)的值 } return 0; } ``` sum.c ``` #include<stdio.h> int sum(int num) { __asm { // 返回 1+2+…+i的值 mov eax, num add eax, 1 imul num mov ebx, 2 idiv ebx mov num, eax } printf("%d\n", num); return num; } ```

c语言,形参是指针的引用,和形参是指针,两者结果不同,求指点

自定义的头文件 ``` typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; ``` 如下是使用形参是指针的引用的函数,结果是正确的 ``` #include "BiTree.h" #include "stdlib.h" #include "stdio.h" bool Delete(BiTree &p) { BiTree q = (BiTree)malloc(sizeof(BiTNode)); q = p; p = p->lchild; free(q); return true; } bool DeleteBST(BiTree &T, int key) { if (!T)return false; else if (key==T->data) { return Delete(T); } else if (key < T->data) { return DeleteBST(T->lchild, key); } } int main() { BiTree t1 = (BiTree)malloc(sizeof(BiTNode)); BiTree t2 = (BiTree)malloc(sizeof(BiTNode)); BiTree t3 = (BiTree)malloc(sizeof(BiTNode)); t1->data = 3; t2->data = 2; t3->data = 1; t1->lchild = t2; t1->rchild = NULL; t2->lchild = t3; t2->rchild = NULL; DeleteBST(t1, 2); printf("%d\n", t1->lchild->data); system("PAUSE"); return 0; } ``` 结果 ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464229127_799521.png) 然后如下是形参为指针的,其实函数是一样的,只是形参从上面的接收指针的引用改为了接收指针 ``` #include "BiTree.h" #include "stdlib.h" #include "stdio.h" bool Delete(BiTree p) { BiTree q = (BiTree)malloc(sizeof(BiTNode)); q = p; p = p->lchild; free(q); return true; } bool DeleteBST(BiTree T, int key) { if (!T)return false; else if (key==T->data) { return Delete(T); } else if (key < T->data) { return DeleteBST(T->lchild, key); } } int main() { BiTree t1 = (BiTree)malloc(sizeof(BiTNode)); BiTree t2 = (BiTree)malloc(sizeof(BiTNode)); BiTree t3 = (BiTree)malloc(sizeof(BiTNode)); t1->data = 3; t2->data = 2; t3->data = 1; t1->lchild = t2; t1->rchild = NULL; t2->lchild = t3; t2->rchild = NULL; DeleteBST(t1, 2); printf("%d\n", t1->lchild->data); system("PAUSE"); return 0; } ``` 结果 ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464229251_539966.png) 结果明显是有问题的,原因应该在free了第2个结点,却没把第一个结点的lchild改为指向第3个结点。可是为什么前一个(即接收指针的引用那个)却没问题呢?两个的区别仅仅在于接收的参数,可是前一个没问题而后一个出了问题。我想不明白前一个为什么会没出问题,求大神指点

c++语言出栈Pop函数调用时参数&e为什么跟定义时形参不一样,形参是指针啊

函数声明: void Pop(SqStack*s, char* e) { if (s->top == s->base)return; *e = *--(s->top); } 调用: char e; Pop(&s,&e);

C语言中顺序线性表的合并

结构体类型变量作为函数参数只能作为指针传递吗?为什么我写一个函数参数是结构体,下面引用时报错 typedef struct { char name[10]; char sex; long num; }ElemType;//自定义元素类型。 typedef struct{ ElemType *elem;//存储空间基址。 int length;//当前长度。 int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)。 }SqList;//定义顺序线性表类型 void MergeList_Sq(SqList La,SqList Lb,SqList *Lc){ ElemType *pa,*pb,*pc; pa=La->elem;pb=Lb->elem; }

LabView中调用MFC-Wizard生成的DLL实现自定义文件对话框功能出错

VC创建MFC-Wizard生成的Dll,在导出函数MyFileOpen中调用由CFileDialog派生类CMyFileDlg实现自定义文件对话框。再在LabView中引用库函数节点调用MFC生成的DLL,输入输出参数设置输入类型int32、输出为C字符串指针即为文件对话框返回的选中目标文件路径。 如上配置完成后,运行弹出1097错误,用error_out屏蔽后,返回路径没有输出结果。DLL调试执行MyFileOpen内的如下代码中 __declspec(dllexport) void MyFileOpen(int* nMode,char* path) { if(*nMode==0) { CMyFileDlg dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, NULL,NULL); dlg.m_ofn.lpstrFilter="Chart Files (*.*)\0*.*\0"; // dlg.m_ofn.lpstrInitialDir="D:\\VC6.0完整\\VC98\\MFC\\Include"; // dlg.OnInitDialog(); if(dlg.DoModal()==IDOK) { //strcat(path,"000"); CString str=dlg.GetFileName(); //???执行没有效果 path=str.GetBuffer(str.GetLength()); *nMode =1; } else { *nMode =2; strcat(path,"000"); return ; } } else { *nMode =2; } return ; } str=dlg.GetFileOpen();没有效果。 求懂LabView和MFC的大神求解,第一次使用LabView调用MFC的动态链接库就出错了

随机生成字符串,要调用Random类中的哪个方法实现?

想要随机生成10个长度不等的字符串,应该调用Random类当中的哪种方法?速求解答!!

关于定义函数后的括号内函数意义

如extern void a(char str[])与extern char str[]区别?要让主函数中的一些参数被外部函数引用,是要加在extern void a(char str[])中的括号内吗?如extern voida(int a,b)?

SpringBoot中的多配置文件问题

项目使用了Springboot(以下简称sb),然后按照规则,它是可以支持多配置文件的 然后我在项目中按照常规的配置方法,使用了一下三个配置文件: application.properties application-dev.properties application-prod.propertis 重点问题如下: 在项目初始搭建阶段,只引用了sb的基本框架,使用了maven来管理的,application文件里面配置了spring.profiles.active=dev 可以正确的读取到里面的参数,如:默认端口为8080,我改为8888,是可以被使用的, 后来由于项目需要,我从pom文件里面添加了各种项目所需框架后,发现启动报错,由于线下环境的数据库地址和线上的环境是不同的,所以数据库地址,账号,密码的配置放在了dev(开发环境)和prod(线上环境)里,查看报错信息提示配置类里面的@Value(${spring.database.url})找不到dev.pro配置文件里面的spring.database.url参数,开发环境配置的端口为8888,此时端口号也改回了默认的8080,明显是dev文件无法读取,然后我将开发环境的配置参数都copy到了总配置文件,而总配置文件application.properties里面的参数是可以被正常读取的,数据库也正常连接上了,想问问有没有哪位大神遇到或者比较熟悉这种配置的能给指点一下

stm32中这个是定义一个结构体吧,要加extern吗??

![图片说明](https://img-ask.csdn.net/upload/201511/02/1446451396_903459.png)这么一句话并没有进行赋值吧

如何把一个头文件中定义的结构体用到另一个头文件中,另一个头文件中定义的结构体又用到改头文件中?

//栈的头文件声明 #include <stdio.h> #include <stdlib.h> #include "Tree" #ifndef STACK_H #define STACK_H typedef union typelemt{ char ch; Tree t; }typelemt; typedef struct stack{ typelemt* type_stack; int max; }stack; typelemt pop(stack* p);//出栈 void push(stack* p,typelemt a);//入栈 void show_stack(stack* p);//释放栈 stack* build_stack();//建栈 void breakstack();//释放栈 #endif ------------------------------------------------------- //树的头文件声明 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "Stack.h" #ifndef TREE_H #define TREE_H typedef char element; typedef struct treeNode{ element value;//树值 struct treeNode* right;//左儿子 struct treeNode* left;//右二子 }treeNode; typedef treeNode *Tree; void BuildTreeWithGeneralListInput(char* s); //(广义表输入建树) /*这个函数里要用到栈,但是这样写"Stack.h"包含"tree.h"而tree.h又包含Stack.h彼此包含无穷无尽先然这是错误的*/ //但是去掉Stack.h中的tree.h则我无法识别出union里的Tree //去掉Tree.h中的Stack.h我就无法识别广义表输入建树用到的栈和它的函数 //怎么解决啊!!求前辈! #endif

.NETCORE如何调用带用户名密码验证和WS验证的WebService?

各位大神,我用.NET引用该webservice,会自动在web.config里创建节点。并自己修改header值。 ![图片说明](https://img-ask.csdn.net/upload/201903/27/1553688980_854974.png) 但是到.NETCORE里就不知道怎么办了,不知道在哪边配置header. ``` //不知道为什么引用过来的WebService没有空的构造函数,必须要有个EndpointConfiguration NotificationServiceSoapClient client13 = new NotificationServiceSoapClient(NotificationServiceSoapClient.EndpointConfiguration.NotificationServiceSoap); var tt = client13.NotifyAsync(JsonConvert.SerializeObject(notice));//执行到这一步就报下面这个错误 ``` ![图片说明](https://img-ask.csdn.net/upload/201903/27/1553688759_469347.png) 我现在该怎么办?如何设置Header和wsse:Security?

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

为什么程序猿都不愿意去外包?

分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

C++(继承):19---虚基类与虚继承(virtual)

一、菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺点: 数据冗余:在D中会保存两份A的内容 访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性 缺点的解决: 数据冗余:通过下面“虚继承”技术来解决(见下) 访问...

计算机网络——浅析网络层

一、前言 注意,关于ipv4和ipv6,ipv4是ip协议第4版本,也表示这个版本的ip一共4个字节,同样地,ipv6是ip协议第6版本,也表示这个版本的ip一共6个字节。 关于网络层使用路由器实现互联:在计算机网络的分层结构中,不同层有不同的中继设备: 计算机网络层 中继设备/中继系统 物理层 中继器、集线器Hub 数据链路层 网桥或交换机(交换机是多端口网桥,两者本质上是一个东西) 网络层 路...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

女朋友过生日,我花了20分钟给她写了一个代理服务器

女朋友说:“看你最近挺辛苦的,我送你一个礼物吧。你看看想要什么,我来准备。” 我想了半天,从书到鞋子到电子产品最后到生活用品,感觉自己什么都不缺,然后和她说:“你省省钱吧,我什么都不需要。” 她坚持要送:“不行,你一定要说一个礼物,我想送你东西了。” 于是,我认真了起来,拿起手机,上淘宝逛了几分钟,但还是没能想出来缺点什么,最后实在没办法了:“这样吧,如果你实在想送东西,那你就写一个代理服务器吧”...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

立即提问
相关内容推荐