【发布时间】:2014-02-24 14:45:31
【问题描述】:
我正在尝试使用以 const 指针作为参数的函数来初始化对象中的变量。
我尝试的许多方式都不断出错,这是我的代码:
class Molecule
{
private:
char s[21];
char d[21];
double w= 0;
public:
Molecule();
void set(const char*, const char*, double);
void display() const;
};
int main() {
int n;
cout << "Molecular Information\n";
cout << "=====================" << endl;
cout << "Number of Molecules : ";
cin >> n;
Molecule *molecule = new Molecule[n];
for (int i = 0; i < n; i++) {
char symbol[21];
char description[21];
double weight;
molecule[i].set(&symbol,&discription,weight);
//...
}
//implementation of class
#include "Molecule.h"
#include <iostream>
#include <cstring>
void Molecule::set(const char*, const char*, double)
{
s = &symbol;
d = &discription;
w = &weigth;
}
我的问题是:如何使用常量字符作为参数从对象数组中正确调用成员函数,以及将它们设置为我的类中的变量的正确方法是什么。
P.S:我一直在努力解决这个问题,在这里发布是最后的手段。
【问题讨论】:
-
这段代码有很多问题。即使您像@simonc's answer那样修复调用,成员函数本身也会损坏。您需要复制字符串,而不是简单地分配(这实际上会编译错误,因为您无法分配指向数组的指针。)您不使用
std::string是否有原因? -
老实说,我是 C++ 初学者,几乎没有 c 经验。我一直在焦躁地研究概念,但有效地实施它们是我遇到的困难。
标签: c++ string pointers initialization argument-passing