访问实例化类的变量
Accessing Variable of an Instanced Class
首先,我为不好的标题命名感道歉。我不知道如何正确地表达它。
我的问题是,我有四个给定的类,为了简单起见,我称它们为A
、B
、C
和D
。
- CCD_ 5是一个包含大量数据的大类
- CCD_ 6基本上是一个包含许多CCD_
B
是一个单例,并为A
提供一个实例。B
有一个成员C* c
- CCD_ 12包含一个方法,该方法调用CCD_
我想测试D
中是否存储了正确的信息,并通过A
传递给程序。
下面是我的代码的简化版本,说明了设置。
#include <stdexcept>
#include <string>
#include <vector>
class D {
public:
// Greatly simplified; this class holds much more data in reality.
std::string info {};
};
class C {
private:
std::vector<D*> d {};
public:
D* getD(int dNum) {
return this->d.at(dNum);
}
};
class B {
private:
C* c {};
D* d {};
B() {
this->c = new C();
}
~B() {
delete this->c;
}
B(const B&) = delete;
B& operator=(const B&) = delete;
public:
static B* getInstance() {
static B instance {}; // singleton
return &instance;
}
bool doSomething(const std::string& text) {
int dNum = std::stoi(text); // simplified
try {
this->d = this->c->getD(dNum);
this->d->info += text;
return true;
} catch (const std::out_of_range&) {
return false;
}
}
};
class A {
public:
bool someFunction(const std::string& text) {
return B::getInstance()->doSomething(text);
}
};
我的测试应该是这样的。
void test() {
std::string testString {"1"};
A a {};
a.someFunction(testString);
// How can I test that for the 'D' object 'd', that was manipulated by the
// call to 'someFunction', 'd.info == testString'?
}
我看过存根和mock,但我不知道如何在这种情况下使用它们(实际上我从未使用过它们)。
如果我的解释不清楚,我再次表示歉意。我在C++方面很弱,因此不知道如何解释。因此,即使搜索类似的问题也被证明是不可能的,所以如果以前有人问过这个问题,我很抱歉。
编辑:我知道我可以通过在B中实现一些getter方法来获得C来实现这一点,但我希望有另一种方法。
您还没有显示是否将内存分配给类指针。在a->someFunction(testString);
中,a
指向哪里?那么,在class B
、neededD = c->getD(dNum);
中,c
指向哪里?此外,必须将行requiredD = d->at(dNum);
更改为requiredD = d.at(dNum);
。请提供完整的详细信息以更好地理解问题。
相关文章:
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 是否可以将指向未实例化的对象的指针用作C++中的变量?
- 类外的静态变量实例化
- XCode 警告"此处需要实例化变量'Singleton:<Foo>:_instance',但没有可用的定义
- 使用动态布尔变量实例化模板
- Google Mock:在目标类的构造函数中实例化的模拟私有变量成员
- 如何在实例化类类型的变量时打印其名称
- 实例化变量,但没有可用的定义
- 访问实例化类的变量/函数
- 如何从类内实例化的对象访问私有变量
- C++ 变量未正确实例化
- 全局变量的 C++ 后期实例化
- 类成员的C++静态成员变量实例化了两次
- 是否为类的每个实例实例化了私有类变量
- 由类中未实例化的静态成员变量引起的未定义引用C++
- 在C++中实例化带大括号与不带大括号的变量有什么区别?
- 使用变量实例化模板化函数
- 如何从另一个类访问一个类的方法/变量,而不在c++中实例化它或子类
- 如何实例化没有默认构造函数的类型的 boost::fusion::vector 成员变量
- 全局静态变量实例化行为