Duanxx的C++学习: 使用类没有被定义 原因及解决方法
今天,随着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)方法来执行搜索语句,但是这个接口并 ...
随机推荐
- PHP - 直接输出对象的版本问题
- linux嵌入式: 实现自己的tree命令
//# cat treecmd.c #include<stdio.h> #include<dirent.h> #include<sys/stat.h> #inclu ...
- .htaccess文件设置
1.为使.htaccess有效,需要先做httpd.conf设置 #打开改写模式Options FollowSymLinks AllowOverride All#打开重写模式,去掉这行注释LoadMo ...
- JProtector java应用加密工具
JProtector 专业的java项目加密工具 JProtector简介: JProtector 专业的java项目加密工具.目前java开发的项目发布的时候需要将项目发布到用户手中,但由于一 ...
- 言未及之而言,谓之躁;言及之而不言,谓之隐;未见颜色而言,谓之瞽(gǔ)
前言 一个高效的团队离不开leader和组员之前,组员和组员之前的通力合作.而合作的基础便是彼此之间的商讨与协调,意见的统一,进而在达成共识的前提下行动.那么如何才能和组员达成共识呢? 和组员之间的沟 ...
- 17.1.1.3 Creating a User for Replication
17.1.1.3 Creating a User for Replication 创建一个用户用于复制: 每个slave 连接到master 使用一个MySQL 用户名和密码, 因此必须有一个user ...
- oschina插件和扩展
Eclipse插件 2551FireFox插件 14IE插件 19Prototype扩展 220Chrome插件/扩展 72WordPress插件 33NetBeans插件 12IDEA插件 25Xc ...
- Android 改变窗口标题栏的布局
Android改变窗口标题栏的布局 第一种方式 --在XML文件里面引入配置文件作为标题. 第二种方式 --动态的代码加入进去. 第三种方式(网上的): 一. 重点 一般应用的Title都是建立应 ...
- Pencil OJ 02 安装
Mongo 官方的安装方法 官方教程已经很好啦,这里就不罗嗦了. 源码编译 待补.我是从这里看到的. 遇到的问题 启动时的警告信息 2015-03-06T21:01:15.526-0800 I CON ...
- Arduino 入门程序示例之一个 LED(2015-06-11)
前言 答应了群主写一些示例程序,一直拖延拖延拖延唉.主要还是害怕在各大高手面前班门弄斧……(这也算是给拖延症找一个美好的理由吧),这几天终于下决心要写出来了,各位高手拍砖敬请轻拍啊. 示例程序 首先是 ...