【发布时间】:2019-10-22 05:50:01
【问题描述】:
假设我有一个头文件:
class.h
#pragma once
#include <iostream>
#include <string>
using namespace std;
class my_class
{
private:
string var1;
public:
my_class(string var1_val) { var1 = var1_val; };
};
我希望将my_class 变量声明为全局变量,以便可以跨函数使用。但是,它不能在主函数之外初始化,因为它需要用户输入才能初始化。这带来了一个问题,好像运行下面的代码,我得到:'my_class': no appropriate default constructor available
source.cpp
#include <iostream>
#include <string>
#include "classes.h"
using namespace std;
my_class f;
int main(){
string inpt;
cout << "Enter var1 value: ";
cin >> inpt;
f = my_class(inpt);
}
我将如何定义变量f 以便在main 中对其进行初始化,同时在source.cpp 文件中的另一个函数中使用它?
【问题讨论】:
-
我认为这不可能直接。一种解决方法是使其成为全局指针并将指针值分配给 main 中 new 返回的指针值。
-
虽然,我不会推荐这个。您应该避免使用全局变量。尝试使用面向对象的设计来解决这些问题。
-
@JatinSharma 对于这个项目,我是。我知道这不是一个好方法,但我只是出于好奇而想知道