这个问题一直围绕着我.
有人可以根据现有的开源项目创建新产品吗?
假设您要创建一个"Apaxe webserver",它基本上是Apache,带有一些额外的插件(比如支持ASP或类似的东西)
这可能吗?
您能否创建一个封闭的源产品(免费或许可)
至于GPL似乎很清楚它是不可能的,因为源应该是开放的.但是Apache许可,BSD和其他"公司友好"怎么样?
价格(对于大多数项目是免费的),错误修复和核心开发团队的计数是阻止其他人将这些OS产品商业化的唯一因素吗?
那么:Khrome是一个基于Chrome的商业产品,支持ActiveX(谁敢做这样的事情:P)
编辑
谢谢大家的答案.
所以,再一次
什么阻止类似(克隆)产品出现在市场上?
:)
注意:我知道我们不是律师,我们可以在http://www.opensource.org/licenses上阅读每个OSS许可证.
请看一下这段代码:
template<class T>
class A
{
class base
{
};
class derived : public A<T>::base
{
};
public:
int f(typename A<T>::base& arg = typename A<T>::derived())
{
return 0;
}
};
int main()
{
A<int> a;
a.f();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译在g ++中生成以下错误消息:
test.cpp: In function 'int main()':
test.cpp:25: error: default argument for parameter of type
'A<int>::base&' has type 'A<int>::derived'
Run Code Online (Sandbox Code Playgroud)
基本思想(使用派生类作为base-reference-type参数的默认值)在visual studio中工作,但在g ++中不起作用.我必须将我的代码发布到他们使用gcc编译它的大学服务器.我能做什么?有什么我想念的吗?
我有一辆Car和派生的SportsCar:Car这样的
东西:
public class Car
{
public int TopSpeed{ get; set; }
}
public class SportsCar : Car
{
public string GirlFriend { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个Web服务,返回汽车的方法,即:
[WebMethod]
public Car GetCar()
{
return new Car() { TopSpeed = 100 };
}
Run Code Online (Sandbox Code Playgroud)
它返回:
<Car>
<TopSpeed>100</TopSpeed>
</Car>
Run Code Online (Sandbox Code Playgroud)
我有另一种方法也返回这样的汽车:
[WebMethod]
public Car GetMyCar()
{
Car mycar = new SportsCar() { GirlFriend = "JLo", TopSpeed = 300 };
return mycar;
}
Run Code Online (Sandbox Code Playgroud)
它编译很好和一切,但在调用它时我得到:
System.InvalidOperationException:生成XML文档时出错.---> System.InvalidOperationException:不期望wsBaseDerived.SportsCar类型.使用XmlInclude或SoapInclude属性指定静态未知的类型.
我觉得奇怪的是,因为mycar是一辆汽车所以它不能将其序列化为直车.
在WebMethod上添加XmlInclude可以消除错误:
[WebMethod]
[XmlInclude(typeof(SportsCar))]
public Car GetMyCar()
{
Car …Run Code Online (Sandbox Code Playgroud) 编译很好,虽然我不想尝试运行它.但是......
//class base;
//class derived;
//class derived : public base;
class base {};
class derived : public base {};
class other
{
public:
void func() {base1 = derived1;}
base* base1;
derived* derived1;
};
void main()
{
}
Run Code Online (Sandbox Code Playgroud)
...将其他类移到base的定义之上并派生出来,我必须在myne程序中执行类似的操作会导致编译错误.
显而易见的解决方案是转发声明base和派生显示在代码顶部注释掉,但这会导致无法在base*和derived*error之间进行转换.尝试转发声明包括继承信息也不起作用.
鉴于以下来源:
public class SourceBase { public string TheString { get; set; } }
public class SourceDerived : SourceBase { }
Run Code Online (Sandbox Code Playgroud)
和目的地:
public class DestBase { public string MyString { get; set; } }
public class DestDerived : DestBase { }
Run Code Online (Sandbox Code Playgroud)
而这个映射:
CreateMap<SourceBase, DestBase>()
.ForMember(dest => dest.MyString, o => o.MapFrom(x => x.TheString))
.Include<SourceDerived, DestDerived>();
CreateMap<SourceDerived, DestDerived>();
Mapper.AssertConfigurationIsValid(); // Exception is thrown here
Run Code Online (Sandbox Code Playgroud)
但是,这会给出一个映射错误,表示MyString未映射到DestDerived.是什么赋予了?我是否真的需要在所有派生类型中重复基类属性的映射(我的实际代码中确实有多个子类).
编辑:
确切的例外是无法映射DestDerived的以下1个属性:MyString.在DestDerived上添加自定义映射表达式,忽略或重命名该属性.
我已阅读了大量类似问题,但未找到答案.我正在使用Visual Studio 2010并提升1.47.
这是代码,它是完整的和可编译的:
#include "stdafx.h"
#include <string>
#include <sstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/export.hpp>
using namespace std;
class BaseObject
{
public:
BaseObject(void) { };
virtual ~BaseObject(void) { };
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{ /* nothing happens here */ };
};
class DerivedObject : public BaseObject
{
public:
string text;
public:
DerivedObject(void) { };
~DerivedObject(void) { };
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & text;
};
};
BOOST_CLASS_EXPORT(DerivedObject)
int …Run Code Online (Sandbox Code Playgroud) 大家好我有一个名为Vehicle的基类,我拥有所有车辆共有的所有属性,我有多个派生类,称为Car,Jeep,派生自Vehicle并添加更多属性
例如:
public class Vehicle
{
public int Color { get; set; }
public double Cost { get; set; }
}
public class Car : Vehicle
{
public SelectListItem Option { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个Page类,其中有一个像这样的车辆列表
public class Page
{
public List<Vehicle> vehicles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的视图是Page类的强类型,因此在我看来,我循环遍历所有车辆以显示在页面上,这样的代码在@using(Html.BeginForm())里面,所以我们回发用户选择
for(int i=0;i<Model.Vehicles.Count;i++)
{
<div id="Question">
@{
@Html.EditorFor(m => m.Vehicle[i], VehicleConstants.GetTemplateName(Model.Questions[i]));
}
<br />
</div>
}
Run Code Online (Sandbox Code Playgroud)
我为每种类型的车辆使用一个编辑器模板,因此函数调用VehicleConstants.GetTemplateName只返回要根据车辆类型使用的模板的名称
此模板只是在汽车类或Jeep类(派生类+基类)上写入属性
我遇到的问题是当表单被回发时我只能访问我的控制器中的基类车辆的属性我无法获得子类汽车或吉普车的属性值.
[HttpPost]
public string ReadPost(Page page)
{
}
Run Code Online (Sandbox Code Playgroud)
回传表单时,将这些值自动终结的最佳方法是什么?
创建自定义活页夹类是我唯一的选择吗?有人可以提供一些示例代码来说明如何执行此操作吗?任何帮助非常感谢.
我有一个void Action()在派生类中重写的虚基本方法.
行动的第一步是打电话base.Action().如果基本方法中出现某种情况,我不希望处理其余的派生方法.
我想知道是否有一个关键字或设计模式,允许我从基本方法退出派生方法.
目前我正在考虑将void更改为bool并将其用作流控制,但我想知道是否有任何其他设计模式我可以使用.
我想了解以下代码.Derived是来自T的派生结构,","意味着什么,然后是Fallback {}
template <class T>
struct has_FlowTraits<T, true>
{
struct Fallback { bool flow; };
struct Derived : T, Fallback { }; //What does it means ?
template<typename C>
static char (&f(SameType<bool Fallback::*, &C::flow>*))[1];
template<typename C>
static char (&f(...))[2];
public:
static bool const value = sizeof(f<Derived>(0)) == 2;
};
Run Code Online (Sandbox Code Playgroud) 这是关于Xcode 9.2.我在我的项目中添加了一个框架(本地Git repo),然后在没有按照我需要它做的时删除它.现在,当我进行提交时,有一个弹出窗口,其中列出了旧的GIT master,即使我的项目中没有该repo的源文件了.
在Xcode中,在源代码管理导航器中,仍未列出未使用的GIT主仓库.我尝试右击,"删除"选项显示为灰色:
我尝试了几个命令行GIT命令(在SO上找到......)来清理,但没有任何影响.
我尝试从头开始重新创建Xcode项目,并且未使用的GIT repo master仍显示在Source Control Navigator中.
我搜索了几个小时,但没有找到任何关于这个问题.
那么,如何在Xcode中删除未使用的源代码控制主机?
derived ×10
c++ ×4
base ×3
c# ×3
templates ×2
asp.net-mvc ×1
automapper ×1
binding ×1
boost ×1
class ×1
export ×1
g++ ×1
git ×1
inheritance ×1
licensing ×1
methods ×1
open-source ×1
web-services ×1
xcode ×1