结构体怎么赋初值?

deltforce 2006-08-18 05:16:03
我有一个结构体,内部有上十个个变量,初值完全相同,
我希望能建立一个结构体对象的时候就能自动的赋值,每次定义个对象要写大量的赋初值代码,好麻烦!
怎么解决
...全文
2197 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lisypro 2006-08-21
  • 打赏
  • 举报
回复
memset()
commandconque 2006-08-21
  • 打赏
  • 举报
回复
CString 是一个类,
在使用结构体的构造函数的时候,你将类的指针都清0了怎么能再使用这个类???
建议不使用CSting,改为使用char *;
deltforce 2006-08-21
  • 打赏
  • 举报
回复
dick_song(卡菲的伙伴)

在结构的构造函数里对this指针做以下操作操作:
struct structure
{
structure(){
memset(this,0,sizeof(structure));\\把0替换成你要的初值
}
int i;
int j;
char k[256];
};

在你的方法中,如果结构使用了CString对象,那么程序就会错误!不知道这是为什么??
wmhkebe 2006-08-18
  • 打赏
  • 举报
回复
构造函数。鉴定完毕。
hdqqq 2006-08-18
  • 打赏
  • 举报
回复
只是上面的这个模板holder 不能在 = 操作符的右边,需要有变通的方式使用
hdqqq 2006-08-18
  • 打赏
  • 举报
回复
可以想想用使用 原生类型的HOLDER

可以定义一个结构,修饰原生的想int ,char 等的


template <typename T>
struct data_holder
{
T m_Value;
T& operator= (T& value) {
m_Value = value;
}
T& value() {
return m_Value;
}
};

template <>
struct data_holder<int>
{
T m_Value;
T& operator= (T& value) {
m_Value = value;
}
T& value() {
return m_Value;
}
data_holder() {m_Value = 200;}
};


typedef data_holder<int> NEWINT;

void test()
{
NEWINT i;
int j;
j = i.value();
cout << j << endl;
j += 100;
i = j;
}

你把NEWINT这种类型的放在结构里面就可以自动赋值了.
littlepboy 2006-08-18
  • 打赏
  • 举报
回复
typedef struct _TTest
{
_TTest(UINT uiInit = -1, BOOL bInit = FALSE)
{
uiVal = uiInit;
bVal = bInit;
ZeroMemory(pszStr, sizeof(pszStr));
}
UINT uiVal;
BOOL bVal;
char pszStr[32];
}TTest;
小李匪盗 2006-08-18
  • 打赏
  • 举报
回复
当然是在构造里来初始化了,这步都想省,你也太懒了吧
deltforce 2006-08-18
  • 打赏
  • 举报
回复
dick_song(卡菲的伙伴)是正解,
不过我能问下,能在结构体中加入语句?
mynamelj 2006-08-18
  • 打赏
  • 举报
回复
memcpy
小水 2006-08-18
  • 打赏
  • 举报
回复
构造函数啊。又不用你显示调用。
要不用memset或者memcpy啊。
deltforce 2006-08-18
  • 打赏
  • 举报
回复
我不想通过函数来赋值,太多了,有没有简单的办法。
dick_song 2006-08-18
  • 打赏
  • 举报
回复
在结构的构造函数里对this指针做以下操作操作:
struct structure
{
structure(){
memset(this,0,sizeof(structure));\\把0替换成你要的初值
}
int i;
int j;
char k[256];
};
mynamelj 2006-08-18
  • 打赏
  • 举报
回复
你想怎样赋值?
qtext 2006-08-18
  • 打赏
  • 举报
回复
在结构定义中放入构造函数。
Elysium 2006-08-18
  • 打赏
  • 举报
回复
有人成功的赋过值吗?指点一下
Elysium 2006-08-18
  • 打赏
  • 举报
回复
似乎编译通不过,可以专门写个初始化函数
const static int[5] = {1,2,3,4,5};这种的可以赋初值,但是结构体内的不行
C++课后答案: 2.1 C++语言中类 class 和结构 struct 的主要区别是什么? 【解答】在 C++中,对结构体做了一个很重要的扩充,即允许结构体包含函数成 员。如此一来,我们可以使用结构体中的数据成员描述对象的属性,使用结构体 中的函数成员描述对象的操作。 2.2 什么是类的接口,什么是类的实现? 【解答】 一般把仅含函数原型的类声明部分称为类的接口; 一个类的内部数据结构和其所有成员函数的定义部分称为类的实现。 2.3 公用 public 成员和私有 private 成员有何区别? 【解答】 私有 private 成员只能被该类中的其他成员访问,而程序中的其它代码是不能直接 访问这些变量的。 公用 public 成员既可以被该类的其他成员访问,也可以被程序中的其它代码访问。 类中的公用成员对外部代码是开放的,通常情况下,程序中的其它代码通过类的 公用成员函数来访问类的私有成员。 2.4 构造函数和析构函数的主要作用是什么?它们各自有什么特性? 【解答】 构造函数是类的一种特殊成员函数,用来为对象进行初始化(给对象的成员 变量初值、申请一些 系统资源、打开文件操作等)。在对象生成的时候自动执行初始化,这会消除任何 错误地不执行初始化的可能。这是 C++面向对象程序设计帮助减少复杂性的另一 途径。 析构函数的作用与构造函数正好相反,当对象被删除时,利用析构函数进行一 些善后处理。一般情况 下析构函数执行构造函数的逆操作,例如可以利用析构函数来释放构造函数所动 态申请的内存空间。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧