私はAppleとBananaという2つのクラスを持っています。私は、関数callItestAを使ってクラスBananaのiTestA(クラスApple)の値を変更したいと考えています。 ここに私のBanana.cppC++の別のクラスから関数を呼び出す方法は?
#include "Banana.h"
#include <iostream>
#include <fstream>
using namespace std;
//Konstruktor
Banana::Banana()
{
cout << "i'm a banana" << endl;
}
//Destruktor
Banana::~Banana()
{
}
//write test
void Banana::writeBanana(){
ofstream myfile;
myfile.open("banana.txt", fstream::in | fstream::out | fstream::app);
myfile << "more bananas\n";
myfile.close();
}
void Banana::callIsetA(Apple a){
//set iTestA in class Apple to 2
a.setItestA(2);
}
とApple.cpp
#include "Apple.h"
#include <iostream>
#include <istream>
#include <fstream>
using namespace std;
int itestA = 0;
//Konstruktor
Apple::Apple()
{
cout << "i'm an apple" << endl;
}
//Destruktor
Apple::~Apple()
{
}
//write test
void Apple::writeApple()
{
ofstream myfile;
myfile.open("apple.txt", fstream::in | fstream::out | fstream::app);
myfile << itestA;
//myfile << "more apples\n";
myfile.close();
}
void Apple::setItestA(int i)
{
itestA = i;
}
だ...(値が変更されていない)
を私は、ポインタを使用してみましたが、動作していないようでした
私はあなたが私を助けることを願っています!
EDIT: マイBanana.h
#ifndef BANANA_H
#define BANANA_H
class Apple;
class Banana
{
public:
Banana();
~Banana();
void writeBanana();
void callIsetA(Apple);
};
#endif
とApple.h
#ifndef APPLE_H
#define APPLE_H
class Banana;
class Apple
{
public:
Apple();
~Apple();
void writeApple();
void setItestA(int i);
private:
int itestA;
};
#endif
あなたは価値によってリンゴを渡しています。その関数内のリンゴは、パラメータとして渡すリンゴとは別のリンゴです(コピーです)。関数内のリンゴを変更する場合は、参照渡しを使用してください。すなわち、 'void Banana :: callIsetA(Apple&a){a.setItestA(2);}'を使用してください – user463035818
私は実際に実装だけで行くのは難しいので、あなたのヘッダーを見たいと思います。またtobiは正しいです。 –