我有依赖性麻烦.我有两个班:Graphic和Image.每个人都有自己的.cpp和.h文件.我将它们声明如下:
Graphic.h:
#include "Image.h"
class Image;
class Graphic {
...
};
Run Code Online (Sandbox Code Playgroud)
Image.h:
#include "Graphic.h"
class Graphic;
class Image : public Graphic {
...
};Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,我收到以下错误:
Image.h:12: error: expected class-name before ‘{’ token
如果我Graphic从我删除前向声明Image.h我得到以下错误:
Image.h:13: error: invalid use of incomplete type ‘struct Graphic’
Image.h:10: error: forward declaration of ‘struct Graphic’
我已经阅读了相当多的Red Bean Software SVN Book,以及SO中的一些问题,但我想确保我在第一次循环之前以正确的方式解决这个问题.我开始使用它.它是否正确?
在/ usr/local/svn创建SVN存储库.目录结构如下所示:
-- conf
-- db
-- format
-- hooks
-- locks
-- README.txt
Run Code Online (Sandbox Code Playgroud)通过命令行为存储库组织(包括项目和供应商)创建文件夹.
-- conf
-- db
-- format
-- hooks
-- locks
-- projects
-- project_name
-- vendor
-- trunk
-- branches
-- tags
-- project_name
-- vendor
-- trunk
-- branches
-- tags
-- README.txt
Run Code Online (Sandbox Code Playgroud)在正确的项目名称下将供应商代码签出到供应商文件夹中.
我不需要通过公共URL提供服务,所以我没有为Apache配置.服务器不在我们的网络中,而是我们租用的专用CentOS盒子.感谢您的任何想法和建议.
编辑:
我想我很困惑,因为我没有代码或项目开始,所以我从供应商的代码开始新鲜.我是否需要在服务器上的某个位置创建一个目录结构,其中包含我的project_name w/vendor,trunk,branches和tags子文件夹,将其导入我的repo,然后将代码从供应商导入到vendor文件夹中?我的想法是,我可以从供应商那里获得更新,然后将这些更新与我对我的主干所做的任何更改合并.
我想知道你们谁可以在同一天参与几个项目,每个项目只需要很短的时间.或者,如果您能够在同一时间工作,同时在两个或三个或更多项目上工作.我有很多事要做,我开始想知道我怎么能这样做?我想过使用几个工作区,然后在之间切换等等.你还使用了哪些其他方法?
目前我的Form1代码非常繁重,主要是菜单和控件事件.我想做的一件事是以某种方式组织它,所以我可以展开或折叠"相关代码"(在Visual Studio中).
我的第一次尝试是将与主菜单相关的代码放在一个名为"MainMenu"的嵌套类中,该类位于Form1类中,这样我就可以在不需要它时简单地折叠嵌套类. .这导致了各种各样的问题(即我找不到在这个嵌套类中设置主菜单的方法).
是否有一个更简单的解决方案,我错过了?或者有人可以解释为什么我的嵌套类想法有缺陷?
虽然最近在项目中尝试采用更多TDD实践,但我遇到了涉及未来需求的测试情况,这让我对其他人如何解决这个问题感到好奇.
比方说,我正在开发一个名为SuperUberReporting的应用程序,当前版本是1.4.当我正在开发要包含在SuperUberReporting 1.5中的功能时,我编写了一个新文件导出功能的测试,该功能允许将报告结果导出为CSV文件.在编写该测试时,我发现支持导出到某些其他格式的功能将针对更高版本的1.6,1.7和1.9,这些版本记录在问题跟踪软件中.现在我面临的问题是我是否应该为这些其他格式编写测试,还是应该等到实际实现这些功能?这个问题涉及TDD的一些基础,我想更广泛地提出这个问题.
只要需求已知,或者需求的稳定程度能否以某种方式决定是否应该编写测试,是否可以预先编写测试?
更一般地说,应该在多长时间内编写测试?编写一个将失败两年的测试是否可以实现该功能?如果是这样,那么如何组织他们的测试来分离需要通过的测试与那些尚未通过的测试?我目前正在使用NUnit进行.NET项目,所以我不介意细节,因为它们可能更好地演示如何完成这样的组织.
我正在为OpenGL构建一个非常轻量级的库/包装器,我遇到了一个小问题.假设我有一个看起来像这样的目录结构:
GraphicsProject
|GraphicsApp
||main.cpp
|GraphicsLib
||include
|||fileA.h
|||fileB.h
||library
|||fileA.cpp
|||fileB.cpp
||shaders
|||shader1.txt
|||shader2.txt
|| build
||| bunch of build stuff
Run Code Online (Sandbox Code Playgroud)
在运行时获取shader1.txt路径的最佳方法是什么?或者,不管是谁在使用这个项目或者它在用户机器上的位置,都要使路径不会改变?
我考虑过的一些选项:1)获取当前的工作目录并使用该路径直到我需要的位置.我对此解决方案的主要关注是,我不确定当前目录将根据用户构建项目的方式或其他因素而无法控制.它也感觉不是很优雅.2)将着色器的源代码存储为char数组/字符串,位于include目录中的.h文件中.这似乎是一个更好的解决方案,除了它会使着色器编写稍微麻烦.
有这样做的标准方法吗?我正在使用CMake构建项目,如果这改变了什么.
它与编程无关,但肯定与开发相关.
我需要一个人类口语语言列表(通常我们在其他所有站点上都可以选择),这是我们其中一个项目所必需的.如果还包含语言代码信息,以及.txt格式或任何其他可提取的信息,那将会很棒.
谢谢
将子命名空间用于纯粹的组织目的会被视为不良做法吗?例如:
namespace vehicles
{
namespace cars
{
// Stuff here
}
namespace boats
{
// More stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
我可以看到这对大型项目来说会是一个什么问题,因为输入vehicles::cars::function很多东西会很不方便.那么小项目呢?
随着我正在努力的项目变得越来越大,我开始非常不确定将类分成包.假设项目有很多层,在这些层中是接口和实现,甚至更多的子层(组件).我总是最终得到很多包装,这些包装开始变得有点混乱.
所以我想知道其他人使用包的方法.你喜欢有很多课程很少的课程或很少有课程的课程吗?您更喜欢将实现与接口分开吗?等等...一般来说,您使用套餐的日常习惯以及您的方法的优点/缺点.
谢谢你的帖子.
我在我的网站上使用Laravel(PHP Framework).在Laravel中,代码组织(松散地)如下
/app
/views
[my base file A].php
[my base file B].php
[my base file C].php
/public
/css
/js
/lib
index.php
Run Code Online (Sandbox Code Playgroud)
实际上有很多文件夹,/app但我只展示了我要添加的重要内容:/views.
由于Laravel如何组织事物,该public/index.php文件被用作应用程序的主要加载视图 - 但它从其中一个views/[my base file].php文件加载实际的html .
所以[my base file A].php看起来像这样,例如:
<link rel="stylesheet" href="css/Normalize.css" type="text/css" />
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="css/out.css" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
文件夹的位置,css/因为这个标记最终会进入public/index.php.我收到错误,因为在这个文件中app/views/没有css/文件夹.
我担心,当我用文件public/夹中的大量代码和引用填充这些文件时,我会根据自己的喜好得到太多错误.我的例子就是<link>现在,但我还有更多.我还需要完成 - 我将使用来自$ scope的直接AngularJS绑定,因为<h3> {{messages.hello}} </h3>(意味着我将访问javascript文件中的变量,我需要完成才能让生活更轻松).
所以我的问题是:我想要做的仍然是对文件进行所有完成/ intellisense …
organization ×10
c++ ×2
angularjs ×1
c# ×1
cmake ×1
gtd ×1
include-path ×1
inheritance ×1
java ×1
laravel ×1
namespaces ×1
nunit ×1
package ×1
php ×1
phpstorm ×1
repository ×1
requirements ×1
svn ×1
tdd ×1