gpt4 book ai didi

c++ - 在 C++ 中预先创建对象

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

这是我正在尝试做的具体示例。我需要在此函数结束时创建一种对象类型,以便我可以将其存储在其他东西(尚未创建)中,即字符串、Id 或表达式参数。我面临的问题是,如果我还没有做逻辑,我不知道要创建什么类型的对象,如果我在做逻辑时在 if 语句中创建对象,它将不再存在。我想将对象存储到此处未列出的另一个类中的类型参数 vector 中。在代码的末尾

bool parameter(Predicate& pred)//look for the following: STRING | ID | expression
{
//store a parameter in this predicate
Parameter // <- I don't know which type of object to create yet!!!!
//create parameter
get_grammar_type(token, sfile);
token_type = token.Get_type();
if(token_type == STRING)
{
//would create object of type string here
//can't create object here. It won't exist after.
}
else if(token_type == ID)
{
//would create object of ID string here
//can't create object here. It won't exist after.
}
if(expression(pred))
{
//would create object of Expression here.can't create object here. It won't exist after.
}
//store object in object pred here. Pred has a private member of a vector of type parameters within it.
return true;
}

#ifndef PARAMETER_H
#define PARAMETER_H
#include <string>
#include <vector>
#include "Predicate.h"

using namespace std;

class Parameter
{

public:

private:
}

class String : public Parameter
{
public:
insert_string(string in_string);


private:
string my_string;

}

class ID : public Parameter
{
public:
insert_id(string in_ID);

private:
string my_ID;

};


class Expression : public Parameter
{
private:
Parameter left_parameter;
Parameter right_parameter;
string op;

public:

};

#endif

//我还想知道如果我还不知道它们是什么类型,我将如何在表达式类中创建左右参数

最佳答案

在这种情况下,您可以使用指针。进一步创建一个 Parameter* 变量,并在您的一个 if 语句中动态分配数据结构并分配给该指针。例如:

Parameter *parameter = NULL;
if(token_type == STRING)
{
parameter = (Parameter*) new String();
}

使用 smart pointers 做一些更有趣的事情如果您不想担心重新分配。

关于c++ - 在 C++ 中预先创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091928/

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