gpt4 book ai didi

c++ - 尝试使用对另一个类的对象的引用

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:22 24 4
gpt4 key购买 nike

我的问题是,我似乎无法通过引用另一个类来发送对象。我在网上查找这个时运气不佳。如果可以,请检查我的来源,如果您有任何想法,请告诉我。 TYIA - 罗兰

我也遇到了这些错误

 error: field 'PgmClass' has incomplete type
error: 'PgmClass' does not name a type
error: expected ')' before 'thesource'
error: 'm_hereitis' was not declared in this scope

#include <iostream>
#include "pgmclass.h"
#include "inclobj.h"

int main()
{

char catchcin[256];

PgmClass wilko;

wilko.addToSet( 7 );
wilko.addToSet( 8 );
wilko.addToSet( 9 );

InclObj alpha( wilko );

wilko.addToSet( 10 );
wilko.addToSet( 11 );

// This doesn't work
alpha.eraseOne( 10 );

// How can I get this to work using referances?

std::cout << "Program Running." << std::endl;
std::cin >> catchcin;

return 0;
}


----------

#include <set>

class PgmClass {

public:
int addToSet( int );
bool eraseSet( int );
std::set<int> m_userset;
};

int PgmClass::addToSet( int theint ) {

m_userset.insert( theint );
}

bool PgmClass::eraseSet( int eraseint ) {

m_userset.erase( eraseint );
}


----------

class InclObj {

public:
InclObj( PgmClass );
void eraseOne( int );

PgmClass m_hereitis;
};

InclObj::InclObj( PgmClass thesource ) {

m_hereitis = thesource;
}

void InclObj::eraseOne( int findint ) {

m_hereitis.eraseSet( findint );
}

最佳答案

您需要将主文件放在文件末尾。 (通常您将类添加到一个单独的 .h 文件中 - 在另一个 .cpp 文件中实现 - 在使用该类之前包含)。定义成员作为引用:

class InclObj
{

public:
InclObj( PgmClass& );
void eraseOne( int );

PgmClass& m_hereitis;
};

InclObj::InclObj( PgmClass& thesource ) : m_hereitis (thesource)
{

}

这样做你承担了一些责任。例如,不要在删除原始对象后使用 eraseOne()。不要尝试添加像 InclObj::use_now_this_other_object(PgmClass& other_source) 等函数。但我假设你知道......

关于c++ - 尝试使用对另一个类的对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14380117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com