我有一个包含vector的类,它也继承了另一个类:
class txtExt : public extention
{
private:
string openedFile_;
public:
vector<string> txtVector; //the vector i want to call
};
我在一个类中的方法中填充向量:
class Manager : public extention
{
// there is some other code here that I know does work
// and it calls this function:
void organizeExtention(string filename, string ext)
{
if(ext == "txt")
{
txtExt txtExt;
txtExt.txtVector.pushback(filename);
}
}
}
这是我尝试调用向量的主要类:
int main()
{
// some code here that does previous operations like getting the path
// and filling the vector
// I've tried many ways of trying to call the vector
// here is an example of one:
vector<txtExt*> testVector;
for(int i = 0; i < testVector.size(); ++i)
{
cout << testVector[i] << endl;
}
return 0;
}
我有几个问题:
注意:我已经能够使用一个非常简单的for循环打印出载入载体的向量
答案 0 :(得分:1)
好吧,正如所说的那样,你发布的代码中有一些错误,你也可能会有一些误解。但要回答问题,这个
testVector[i]->txtVector
是访问每个txtVector
对象中的txtExt
对象的方法。
如果这对您不起作用,那是因为您的代码中存在其他错误/误解之一。
答案 1 :(得分:0)
总结:
重读好的C ++书籍的第一章(The Definitive C++ Book Guide and List),然后尝试修复你的程序并处理每个错误。
您的代码中存在多个错误。
<<
。 txtExt
类型的对象也不能像那样打印。 我无法猜测代码应该做什么。以下是您需要了解的一个简单示例:
#include <iostream>
#include <vector>
#include <string>
class TxtExt
{
public:
std::vector<std::string> txtVector;
};
int main(){
TxtExt oneTxtExt;
oneTxtExt.txtVector.push_back("hello");
oneTxtExt.txtVector.push_back("world");
for( auto &i : oneTxtExt.txtVector ){
std::cout << i <<std::endl;
}
}
以下代码是正确的,但绝对没有效果。你也可以写{}
:
{
TxtExt TxtExt;
TxtExt.txtVector.pushback(filename);
}
你在这里创建一个新对象,推回它(顺便说一下,它被称为push_back
),然后在范围的末尾销毁对象。另外,不要将对象命名为与类相同的对象,它会变得非常混乱。