今天,随着C++写的神经网络算法。我发现了一个很令人费解的问题,下面的描述一般地描述,例如:
我有两个类ClassA和ClassB,它们分别有成员变量a。b;
ClassA有一个函数是这种:FunctionA(const ClassB &classB)
ClassB中也有一个类似的函数:FunctionB(const ClassA&classA)
一開始代码类似于这种,可是报错了,原因非常easy,ClassB在FunctionA使用ClassB的时候,ClassB仅仅有声明,未定义。
class ClassB; ///<提前声明ClassB class ClassA
{
public:
void FunctionA(const ClassB &classB);
int a;
}; void ClassA::FunctionA(const ClassB &classB)
{
int k = classB.b; ///<这里报错了,使用了没有定义的ClassB
} class ClassB
{
public:
void FunctionB(const ClassA *classA){int k = classA->a;};
int b;
}; void FunctionB(const ClassA &classA)
{
int k = classA.a;
} int main()
{
return 0;
}
既然问题是:ClassB仅仅有声明,未定义。
为了解决上面这个问题,这里须要做一件事情:
就是将FunctionA的实现。放在ClassB的定义之后就能够了。
class ClassB; ///<提前声明ClassB class ClassA
{
public:
void FunctionA(const ClassB &classB);
int a;
}; class ClassB
{
public:
void FunctionB(const ClassA *classA){int k = classA->a;};
int b;
}; ///< FunctionA 放在ClassB的定义之后就没有问题了
void ClassA::FunctionA(const ClassB &classB)
{
int k = classB.b;
} void FunctionB(const ClassA &classA)
{
int k = classA.a;
} int main()
{
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Duanxx的C++学习: 使用类没有被定义 原因及解决方法的更多相关文章
-
zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法
转载自:http://blog.csdn.net/wide288/article/details/21622183 zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法: ze ...
-
(转) 学习C++ ->; 类(Classes)的定义与实现
学习C++ -> 类(Classes)的定义与实现 一."类" 的介绍 在C++中, 用 "类" 来描述 "对象", 所谓的&q ...
-
动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法
[导读]ServiceDescriptionImporter是创建Web Service 时使用的类,它是引用继承System.Web.Services 当我将VS2005里写的一段代码放在VS201 ...
-
关于swift语言中导入OC三方类找不到头文件的解决方法
首先我遇到的问题是这样的: 我之前封装的OC类,我导入现在的swift工程中,然后建立桥接文件,在Swift的控制器中可以找到这个OC写的东西. 但是问题来了,当你使用cocoapods导入的OC三方 ...
-
在Springmvc普通类@Autowired注入request为null解决方法
在Springmvc普通类@Autowired注入request为null解决方法 在类中加入以下注入request对象的代码,运行时发现request为null,注入失败.在@Controlle ...
-
学习Android过程中遇到的问题及解决方法——网络请求
在学习Android的网络连接时遇到崩溃或异常(出现的问题就这两个,但是不稳定)的问题,先上代码,看看哪里错了(答案在文末) activity_main.xml: <?xml version=& ...
-
webpack学习笔记(二)-- 初学者常见问题及解决方法
这篇文章是webpack学习第二篇,主要罗列了本人在实际操作中遇到的一些问题及其解决方法,仅供参考,欢迎提出不同意见. 注:本文假设读者已有webpack方面相关知识,故文中涉及到的专有名词不做另外解 ...
-
学习Android过程中遇到的问题及解决方法——AS为xutils添加依赖
在使用xutils时遇到不能添加以来的问题,花了很长时间终于解决,网上添加依赖的方法很多,在此针对个人出现的问题作下笔记. 我本想使用jar包,因为在使用smartImageView时是用的jar包来 ...
-
java学习笔记38(sql注入攻击及解决方法)
上一篇我们写了jdbc工具类:JDBCUtils ,在这里我们使用该工具类来连接数据库, 在之前我们使用 Statement接口下的executeQuery(sql)方法来执行搜索语句,但是这个接口并 ...
随机推荐
-
什么是bower
Bower是一个客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源.其他一些建立在Bower基础之上的开发工具,如YeoMan和Grunt,这个会 ...
-
xml基础学习笔记04
今天继续xml学习,主要是:SimpleXML快速解析文档.xml与数组相互转换 .博客中只是简单的做一个学习记录.积累.更加详细的使用方法,可以查看php手册 1.SimpleXML快速解析文档 前 ...
-
Eclipse配置CAS client
1.新建一个Maven项目 2.Next,选择 3.输入group id 和 artifact id --> Finish 4.项目创建完成的目录结构 编辑pom.xml文件,写上依赖 注意把 ...
-
PO >; Create PO时关于汇率问题需要注意的步骤
为了使得RMB采购的PO在审核时不会提示汇率丢失(如下图),在创建PO时需要注意几个步骤. 1)手动创建PO:在建立PO行之前,应该选择好正确的"地点","币 ...
-
[Leetcode][Python]23: Merge k Sorted Lists
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 23: Merge k Sorted Listshttps://oj.leet ...
-
Swift编程语言学习9—— 存储属性和计算属性
属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性能够用于类.结构体和枚举里,存储属性仅仅能用于类和结构体. 存储属性和计算属性通经 ...
-
加载SpriteBuilder中的scene为何不能带后缀
我们在Xcode中切换SpriteBuilder中的scene时,一般使用的是如下代码: -(void)exitButtonPressed:(CCControl*)sender{ CCLOG(@&qu ...
-
sql注入语句整理
1.判断有无注入点; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass password 等..and 0<>(select ...
-
SharePoint 2013 将HTML文件转换为母版页
内容中包含 base64string 图片造成字符过多,拒绝显示
-
vue案例 - vue-awesome-swiper实现h5滑动翻页效果
说到h5的翻页,很定第一时间想到的是swiper.但是我当时想到的却是,vue里边怎么用swiper?! 中国有句古话叫:天塌下来有个高的顶着. 在前端圈里,总有前仆后继的仁人志士相继挥洒着热汗(这里 ...