【发布时间】:2014-03-17 07:26:12
【问题描述】:
我希望这不是一个愚蠢的问题。基本上我想访问存储在一个类中的字符串(语句是我正在使用的名称),在一个语句类型的向量中。基本上我试图将对象存储在对象的动态层次结构中。 Types.cpp:
#include<iostream>
#include<fstream>
#include <string>
#include <vector>
using namespace std;
class Statement{
public:
vector<string> Inner_String;
vector<Statement> Inner_Statement;
string contents;
void set_contents (string);
string get_contents(){ return contents;}
void new_string(string);
string get_string(int v){return Inner_String[v];}
void new_Inner_Statement(Statement);
Statement get_Inner_Statement(int v){return Inner_Statement[v];}
};
void Statement::set_contents(string s){
contents = s;
}
void Statement::new_string(string s){
Inner_String.push_back(s);
}
void Statement::new_Inner_Statement(Statement s){
Inner_Statement.push_back(s);
}
主要方法:
#include <iostream>
#include "FileIO.h"
#include "Types.h"
using namespace std;
int main()
{
Statement test;
test.new_Inner_Statement(Statement());
Statement a = test.get_Inner_Statement(0);
a.set_contents("words");
cout << a.get_contents();
test.get_Inner_Statement(0).set_contents("string");
cout << test.get_Inner_Statement(0).get_contents();
return 0;
}
发生的事情是 cout
【问题讨论】:
-
您的代码在技术上表现出未定义的行为。您不能让类
T包含vector<T>数据成员。std::vector需要一个完整的类型。您可能想查看Boost.Container库,它们有一些不完整类型的容器。
标签: c++ string class object vector