[英]trouble with accessing a class from a different class
just started to learn c++.I'm trying new things in c++ on thing i wanted to try is to access a class from another class and change its instances and print its instance on screen.
我想知道兩件事 1)我的代碼有什么問題 2)我應該在哪里聲明 class 聲明(在主文件或 class 定義文件中?)
這是錯誤日志-
'object::carrier' uses undefined class 'sub'
'cout': is not a member of 'std'
'cout': undeclared identifier
這就是我想出的-source.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
class,特別是object::get
定義中,您使用變量carrier
而不在 Z31A1FD140BE4BEF2D11E18AEC
當您在構造函數中聲明變量sub carrier
時,它只能在同一個 scope 中訪問,即在構造函數內部。 一旦您的程序離開 scope,變量carrier
將被釋放(刪除)。
您必須將變量sub carrier
作為成員添加到 class 中,如下所示:
class object
{
private:
sub carrier
// other stuff
}
編輯:我所以你編輯了你的問題。
您必須將cout
替換為std::cout
,因為cout
是 c++ 標准庫的一部分。 或者,一個不那么冗長的選項是添加using namespace std;
在每個.cpp
文件的頂部。 這基本上告訴編譯器您可以使用命名空間std
而無需明確說明。 但不要為.h
文件這樣做。 這不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.