从其他类访问类时遇到问题
trouble with accessing a class from a different class
刚开始学习C++。我正在尝试 c++ 中的新事物,我想尝试的是从另一个类访问一个类并更改其实例并在屏幕上打印其实例。
我想知道 2 件事 1(我的代码有什么问题 2(我应该在哪里声明类声明(在主文件或类定义文件中?
这是错误日志 -
'object::carrier' uses undefined class 'sub'
'cout': is not a member of 'std'
'cout': undeclared identifier
这就是我想出的——来源.h
#include <iostream>
#include <vector>
#include "stuff.h"
int main()
{
object spoon(3);
spoon.get();
}
东西.cpp
#pragma once
#include <vector>
class object;
class sub;
class object
{
private:
std::vector <sub> thing;
public:
object(int n);
void get() const;
};
class sub
{
private:
int num;
public:
void set_num(int n);
};
东西.cpp
#include <vector>
#include "stuff.h"
// methods for object
object::object(int n)
{
sub carrier;
carrier.set_num(n);
}
void object::get() const
{
std::cout << carrier.num;
}
// methods for sub
void sub::set_num(int temp_num)
{
num = temp_num;
}
谢谢
在object
类中,特别是object::get
定义中,您可以使用变量carrier
而不使用它在范围内。
在构造函数中声明变量sub carrier
时,它只能在同一范围内(即在构造函数内部(访问。一旦程序离开范围,变量carrier
就会被释放(删除(。
您必须将变量sub carrier
作为成员添加到类中,如下所示:
class object
{
private:
sub carrier
// other stuff
}
编辑: 我所以你编辑了你的问题。
必须将cout
替换为std::cout
cout
因为它是 c++ 标准库的一部分。或者,一个不太详细的选项是在每个.cpp
文件的顶部添加using namespace std;
。这基本上告诉编译器,您可以使用命名空间std
而无需明确说明。但不要将文件.h
这样做。这不是一个好主意。
相关文章:
- 编译包含字符串的代码时遇到问题
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 从其他类访问类时遇到问题
- 使用静态成员声明类时遇到问题
- C++ 填充数组时遇到问题
- 在将字符串放入字符串向量时遇到问题?
- 余数除法和不允许除以零 (c++) 时遇到问题
- 我在C++中使用 getline() 函数时遇到问题
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 在我的四叉树实现中遇到问题
- 在 c++ 中循环遍历数组时遇到问题
- 使用 MinGW 在 Windows 上构建 GLEW 时遇到问题
- 编译 Cilk Plus 程序时遇到问题
- 存储另一个函数返回的布尔数组时遇到问题
- 我在 OpenGL 中显示图像时遇到问题
- 我在解决此错误时遇到问题.我正在努力在主函数中传递数组
- 在 for 循环中更新两个变量时遇到问题C++
- 为什么我的程序在打开网络设备时遇到问题
- 在 Tensorflow C++ 中使用 FIFOQueue 时遇到问题
- 为什么我在虚幻引擎中的多态性和接口方面遇到问题?