c++ 不同文件中的类函数 为什么无法相互调用?

c++初学
我定义了两个类,假设为A和B。
B继承了A,但是B调用A的某变量时,A里我写的500,B调用的时候就变成0了;另外我在B里修改这个变量,A那里也没法修改QAQ
代码太多了不太好贴,拜托大家了55555

c++

1个回答

你是不是A和B里面声明了同名的变量?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

C++中类A和类B如何相互调用

类A中有函数FunA1()调用类B中函数FunB1();而类B中的函数FunB2()又调用了类A中函数FunA1(); 如何才能实现这样的功能???谢谢! 在A.h和A.cc文件中实现先声明B,然后用B的指针: class B //B的声明 class A() { public: FunA1(); { b->FunB1(); } private: B *b; } 在B.h和B.cc文件想调用A中函数: class B() { public: FunB1(); { } FunB2(); { //想在这块儿调用A的函数FunA1(),如何才能实现? } ~~ ~~ private: ~~~~~~ }

【python-C相互调用】python里的dict如何作为参数传入.so中的c语言函数

【python-C相互调用】关于python通过.so调用C函数来读取python里某个key的值并进行处理,一直无法将dict传到C中,求助 1. 首先是C中的包装函数定义 ``` static PyObject * Extest_reverse(PyObject *self, PyObject *args,PyObject *keyds) { //PyObject* keyds = PyDict_Keys(args); static char* kwlist[] = {"name",NULL}; char *name; //将dict中的name里的值读到char* name中 PyObject* retval; if(PyArg_ParseTupleAndKeywords(args,keyds,"isi",kwlist,&name)) { retval = (PyObject *)Py_BuildValue("i",1); printf("%s",name); free(name); return retval; //成功读取返回1 } else retval = (PyObject *)Py_BuildValue("i",0); return retval; //未读取返回0 } static PyMethodDef ExtestMethods[] = { {"reverse",(PyCFunction)Extest_reverse,METH_VARARGS | METH_KEYWORDS,"reverse"}, }; void initwmf() { Py_InitModule("wmf",ExtestMethods); } ``` 2. python里的调用 .so已生成,将python 中定义的dict作为参数输入 ``` import wmf test = {'name':'wmf'} result = wmf.reverse(test) print(result) ``` 返回结果一直是0,未读到对应key值的value,进一步查验返现,test这个dict就没有传进去,传入参数是NULL。求助定义的问题,还是调用的问题?如何解决

为什么两个c源文件的函数不能互相调用

文件main.c #include <stdio.h> extern void print(void); extern void print1(void); static int i=100; void main(void) { printf("i is :%d\n",i); print(); print1(); getch(); } ---------------------------------------------------------------------------- 文件11.c #include <stdio.h> static int i=1000; void print(void) { printf("\ni is :%d",i); } void print1(void) { i=10; printf("\ni is:%d",i); } -------------------------------------------------------------------------- 我试过写#include "11.c"进main.c,但是编译器会报错redefition i,我不明白static不是只作用在原文件吗?怎么回出现重复定义的.![![图片说明](https://img-ask.csdn.net/upload/201703/29/1490734430_640768.png)图片说明](https://img-ask.csdn.net/upload/201703/29/1490734418_122939.png)

mfc中,成员函数如何去调用另一个成员函数中的变量

void CMymfcDlg::OnBnClickedReadimg() { // TODO: Add your control notification handler code here CFileDialog dlg(TRUE, _T("*.bmp"), NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, _T("Image Files(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp|All Files (*.*)|*.*||"), NULL);// 选项图片的约定 dlg.m_ofn.lpstrTitle = _T("Open Image"); // 打开文件对话框的标题名 if( dlg.DoModal() != IDOK ) // 判断是否获得图片 return; CString mPath = dlg.GetPathName(); // 获取图片路径 IplImage* ipl = cvLoadImage( mPath, 1 ); // 读取图片、缓存到一个局部变量 ipl 中 if( !ipl ) // 判断是否成功载入图片 return; if( TheImage ) // 对上一幅显示的图片数据清零 cvZero( TheImage ); ResizeImage( ipl ); // 对读入的图片进行缩放,使其宽或高最大值者刚好等于 256,再复制到 TheImage 中 ShowImage( TheImage, IDC_ShowImg ); // 调用显示图片函数 cvReleaseImage( &ipl ); // 释放 ipl 占用的内存其中包含了两个新的成员函数 } void CMymfcDlg::OnBnClickedGray() { //如何在此函数中获取上个成员函数的mPath }

关于android studio调用第三方so库的细节问题,如何建立Java和so库之间的通信?

最近开始研究ndk,因为c++不懂,所以比较吃力。 目前了解了c++文件的调用 1.ndk环境配置 2.c++文件导入 3.CmakeLists.txt文件配置 4.通过native-lib 建立Java和c++通信,函数调用 关于第三方so库调用网上的教程看了很多,但是因为非常小白,很多细节还是不明白, 关于so库的导入已经了解了,但是Cmakelists.txt文件里面该如何编写, 以及Java和so库如何通信,调用函数还是搞不懂。 比如说我有a.so, b.so, c.so三个文件,他们之间相互关联, 有一个void test(int a, int b)可调用的函数,那么在Java和CmakeLists.txt中我该如何操作呢? 希望大神可以指点一下,非常感谢!

linux动态库与静态库之间的调用问题

linux程序编译通过,运行时出错symbol lookup error: /usr/lib/libE.so: undefined symbol: test_D1 静态库libD.a中: 提供函数接口test_D(),test_D1(),test_D2() 动态库libE.so中:提供函数接口test_E() int test_E() { test_D(); return 0; } 应用程序make时,链接了动态库libE.so,将静态库libD.a编译进去了, 将应用程序和动态库libE.so下到开发板时程序运行正常。 现在修改动态库libE.so源码,头文件不变,将test_E()改为 int test_E() { test_D(); test_D1(); return 0; } 原来的应用程序不变,只将libE.so更新到开发板 为什么会出现上面的错误,该如何解决?? 求高手帮助!!!!!!!!!!!! 急!急!急!

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

//栈的头文件声明 #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

关于Linux静态库的问题

这几天在写Linux的静态库的时候遇到一个问题,就是为什么组成静态库的源文件之间的函数可以相互调用,而且不用通过任何头文件的辅助和声明? 具体情况如下,我写了一个简单的案例 TestLib1.c: #include <stdio.h> #include <stdlib.h> void A() { printf("this is function a\n"); B();//这个函数文件在TestLib2.c中 } TestLib2.c: #include <stdio.h> #include <stdlib.h> void B() { printf("This is function B\n"); } TestLib1.c和TestLib2.c共同形成libtest.给主函数文件Test.c使用 Test.c: #include <stdio.h> #include <stdlib.h> int main() { printf("This is Test main\n"); A(); } 可以运行成功,请问这是为什么在LibTest1.c中调用LibTest2.c的B函数可以不用头文件辅助或是extern声明?请大神讲解一下

vc6.0中如何编译和执行由多个C++源文件组成的程序

程序分成几个不同部分的源文件,怎么导入一个工程中,新手求编译执行的步骤

新手关于Java语言语法及环境变量的疑问

最近看了些java语言基础,里面讲到Java单独写一个字面值,会报错,但是写一个有返回值的函数却不接收,则不会报错,但是有返回值的函数最后不是返回一个字面值吗,这和单独写一个字面值有什么区别又为什么不会报错呢? 还有就是关于ClassPATH和ClassLoader的的疑问,我下载JDK后,在配置环境变量的时候,由于失误,只配置了PATH以及JAVA_HOME ,而没有配置ClassPATH环境变量。(cmd里编译,运行,以及桌面使用编译软件时均可正常使用) 按照网上资料的说法,java虚拟机的ClassLoader就应该只会在当前目录下面寻找.class文件。 我尝试了一下,同一个文件夹下的.class文件的确可以相互调用,同一根目录,不同文件夹下的确不行,但是,JDK里的库函数也没有在我后来写代码的目录下呀,甚至连根目录都不相同(一个在C盘,一个在F盘),然而还是可以调用,请问这是什么原理呢?求大佬解答

Qt跨dll之间的通信和组件开发

最近看到一个别人的开发框架,组件化的管理。exe工程里基本没有甚么东西,所有的操作都是在dll之间实现的。菜单menu、工具条toolbar,窗口docwidget都是在xml的配置文件中添加,在一个dll中通过addmenu,addtoolbar等添加到界面上。现在麻烦的一点是事件的相应,或者说信号/槽的对应。因为具体的实现在在另一个dll中,所以重点就是实现这两个dll间的连接。 因为那个框架是封装好的,只有头文件,dll。看不到后台的具体实现。哪位大神指导通过甚么机制能实现这种效果吗。

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

Python可以这样学(第一季:Python内功修炼)

Python可以这样学(第一季:Python内功修炼)

C++语言基础视频教程

C++语言基础视频教程

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

Python数据分析与挖掘

Python数据分析与挖掘

微信小程序开发实战之番茄时钟开发

微信小程序开发实战之番茄时钟开发

软件测试2小时入门

软件测试2小时入门

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问