public class Class1
{
public Class1()
{
prop = new Class2();
}
public Class2 prop { get; set; }
public class Class2
{
public Class2()
{
this.prop2 = "nikola";
}
public string prop2 { get { return prop2; } set { prop2 = EditString(value); } }
public string EditString(string str)
{
str += " plavsic";
return str;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码,我有问题.当我尝试初始化类型为Class1的对象时,它会抛出StackOverflowException错误.我究竟做错了什么?
我的问题陈述如下.存在"域"的概念,其由许多"子域"组成.现在,这些子域本身就是域.以下是我可以做的事情的基本方法.我可以使用auto_ptr或其他东西,但现在暂时离开.
class Domain
{
private:
Domain* subdomains;
}
Run Code Online (Sandbox Code Playgroud)
但是,我能够编译并运行以下程序,我认为它做了同样的事情并给了我想要的东西.
#include <iostream>
#include <vector>
#include <string>
class Domain
{
private:
std::string name_;
public:
std::vector<Domain> subdomains;
Domain(std::string name) : name_(name) {};
std::string name() {return name_;}
void addSubDomain(std::string subDomainName);
};
void Domain::addSubDomain(std::string subDomainName)
{
subdomain.push_back(Domain(subDomainName));
}
int main()
{
std::cout<<"Hello, World"<<std::endl;
Domain domain("wow");
domain.addSubDomain("wow-child");
std::cout<<"Domain name is "<<domain.name()<<std::endl;
std::cout<<"Subdomain name is "<<domain.subdomain[0].name()<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我运行它的输出是
$./main
Hello, World
Domain name is wow
Subdomain name is wow-child
Run Code Online (Sandbox Code Playgroud)
我的问题是,在实施以下内容时,我是否有任何陷阱?现在,我看不到任何东西.如果没有陷阱,那么这对我的问题来说是一个非常好的解决方案.
编辑
如果这不是一个解决方案,那么还有另一个我可以使用的解决方案,它不涉及原始指针的管理吗?
我想从朋友(+子)类覆盖嵌套类中的虚函数.这怎么可能?这是我尝试过的:
class Parent {
friend class Child;
class Nested {
public: virtual void nestedfunc() {std::cout << "one";}
}
};
class Child : Parent {
void Child::Nested::nestedfun() {std::cout << "two";}
}
Run Code Online (Sandbox Code Playgroud)
但我得到:
error: cannot define member function 'Parent::Nested::nestedfunc' within 'Child'
Run Code Online (Sandbox Code Playgroud)
(没有"Child ::"的相同错误)
是否有一种简单的方法可以在保持所有3个级别的同时修复此错误?
从对象派生ClassA没有帮助.
提前致谢!
>>> class classA:
... class classB(object):
... def __init__(self):
... self.b = 3
... class classC(classA.classB):
... def __init__(self):
... super(classC, self).__init__()
... self.c = 4
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in classA
File "<stdin>", line 5, in classB
NameError: name 'classA' is not defined
Run Code Online (Sandbox Code Playgroud) 我正在尝试研究c#中的嵌套类.在阅读了许多文档和goggling之后,我还不清楚何时使用嵌套类.但据我所知,我做了一个小样本程序.我在下面粘贴我的代码.这个嵌套类程序是否以正确的逻辑实现?.实际上嵌套类用于什么?而且我对这个程序有疑问,我在程序中指出了这个疑问.请帮我 ...
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Bank bankObj = new Bank();
bankObj.CreateAccount();
bankObj.ShowMyAccountNumber();
}
}
class Bank
{
static int accountNumber; // here if I just declare this as int accountNumber without static it showing an error in the CreatePersonalAccount(int accNo) method's first line ie accountNumber = accNo; as "Cannot access a non-static member of outer type." What actually this error mean ?
public class BankAccountSection
{
public bool CreatePersonalAccount(int accNo)
{
accountNumber …Run Code Online (Sandbox Code Playgroud) 我喜欢使用私有嵌套类,除了它们总是感觉如此混乱.通常我把它们放在自己的中#region,但是我希望它们在位置方面与它们的父类分开,而且我也不希望它们在单独的文件中.我决定做的是让他们的父类成为局部,然后将子类放在文件中父类的下面.
不幸的是,似乎每个文件都不能有多个部分类定义.
(编辑:事实证明,每个文件可以有多个部分部分;它只是表单设计者不喜欢它.)
我真正想做的是(所有在一个文件中):
internal class Parent
{
}
private class Parent.Child1
{
}
private class Parent.Child2
{
}
Run Code Online (Sandbox Code Playgroud)
但似乎我所能做的就是为每个新的子类生成一个新的源文件,或者像这样安排它们:
internal class Parent
{
private class Child1
{
}
private class Child2
{
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法完成我在这里要做的事情?
我有一个.dll文件,我在其他程序中调用函数,但调用单个函数最终看起来像这样:
例:
KeySim.KeySim.Basic.KEY_E();
Run Code Online (Sandbox Code Playgroud)
当程序停止工作时,我无法修改类的嵌套.我想知道是否还有其他方法来缩短调用函数的代码
注意:
Keysim是命名空间,Keysim是主类,Basic是嵌套类
我有一个在全局范围内声明的类,另一个具有相同名称的类嵌套在某个类中.
class Address {
var someProperty: String?
}
class ThirdPartyAPI {
class Address {
var someOtherProperty: String?
init(fromAddress address: Address) {
self.someOtherProperty = address.someProperty
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:如何从初始化中引用全局类而不是内部类?在给出的示例中,我遇到了错误Value of type 'ThirdPartyAPI.Address' has no member 'someProperty',这意味着编译器引用内部Address而不是全局内部.
情况如下:
我有一个由以下文件定义的类.
Foo.h文件:
template<typename MyType>
class Foo
{
public:
Foo(int number = 50);
private:
typedef enum {VAR1, VAR2} Type;
class Bar
{
MyType a;
Type b;
Bar(int param1, Type param2) : a(param1), b(param2) {}
}
std::vector<Bar> vec;
};
Run Code Online (Sandbox Code Playgroud)
Foo.cpp文件:
template<typename MyType>
Foo::Foo(int number) : vec(number)
{ }
Run Code Online (Sandbox Code Playgroud)
问题是当我编译它时,我在.cpp文件的第一行收到错误,说它需要一个没有参数的Bar的构造函数.我想它需要它在Foo中创建矢量.我为Bar添加了一个没有参数的构造函数,给出了以下.h文件:
template<typename MyType>
class Foo
{
public:
Foo(int number = 50);
private:
typedef enum {VAR1, VAR2} Type;
class Bar
{
MyType a;
Type b;
Bar() {} // <---- Line added
Bar(int param1, Type …Run Code Online (Sandbox Code Playgroud)