标题可能令人困惑,但我想知道是否有可能创建这样的程序:
class family_tree
{
private:
string name, surname;
family_tree father(); //fragile point!
public:
family_tree();
family_tree(string n, string sur");
void print();
};
关于此类声明的标准是什么?编程的好习惯是什么呢?这很危险吗?
更有甚者,我不能使用第二个构造函数:
family_tree father("A","B");
compilator:
字符串常量之前的预期标识符
在字符串常量之前预期','或'...'
我会感谢任何帮助
答案 0 :(得分:1)
class family_tree
{
private:
string name, surname;
family_tree father(); //fragile point!
public:
family_tree();
family_tree(string n, string sur); // note that I removed a " here.
void print();
};
这完全有效。你的脆弱点根本不脆弱 - 你有一个返回family_tree的函数,并且它在family_tree对象上被调用并不重要。无论语言是否允许您隐式地将const char * string文字强制转换为std :: string,我都记不住了。
答案 1 :(得分:0)
upss ..你是对的DeadMG我刚宣布了功能。在你之前有人(他删除了消息?)写道,我可以声明指向对象family_tree * father的指针;我认为这是我的问题的最佳解决方案